Consider the following code: enum StringTypeEnumOne : string { bla = "bla" } enum StringTypeEnumTwo : string { bleh = "bleh" } enum IntTypeEnumOne : int { bla = 1 } enum IntTypeEnumTwo : int { bleh = 2 } public void main() { string[] strings = [StringTypeEnumOne.bla, StringTypeEnumTwo.bleh]; int[] ints = [IntTypeEnumOne.bla, IntTypeEnumTwo.bleh]; } When compiled the following compilation error is thrown: src\app.d(19,16): Error: cannot implicitly convert expression (cast(IntTypeEnumOne)1) of type IntTypeEnumOne to IntTypeEnumTwo The string members are implicitly cast just fine, however I also expected the members of the int enum to be cast implicitly because I explicitly defined the base type of the enum.
Current work-around is to explicitly cast all enum members: int[] ints = [cast(int) IntTypeEnumOne.bla, cast(int) IntTypeEnumTwo.bleh];
I cannot reproduce this. It seems to have been fixed since 2.094.2