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.

Is this a bug in D? Or is using an int as base type the same as having no base type at all?

Reply via email to