maarten van damme:

enum first : string{
 a="a",
 b="b"
}

enum second : string{
 a=first.a,
 b=first.b,
 c="c"
}

Is there a way to make this cleaner?

By convention in D enum names start with an upper case.

I have tried this, partially derived by Simen Kjaeraas code (with T.stringof), but isn't D supporting mixins inside enums?


string EnumInh(T)() if (is(T == enum)) {
    string result;
    foreach (e; __traits(allMembers, T))
        result ~= e ~ " = " ~ T.stringof ~"." ~ e ~ ",\n";
    return result;
}

enum First : string {
    a = "a",
    b = "b"
}

enum Second : string {
    mixin(EnumInh!First),
    c = "c"
}

void main() {}

Bye,
bearophile

Reply via email to