Allow illegal code in enum initialization?

simendsjo simendsjo at gmail.com
Wed Oct 23 02:55:13 PDT 2013


Illegal code is accepted in static if, but not in enum 
declarations. This leads to having three lines when one is 
enough. Is this just an oversight, or by design?

template T(alias A) {
     enum T = true;
}

void main() {
     struct S { }
     static if(__traits(compiles, S.a) && T!(S.a)) // ok
         enum e1 = true;
     else
         enum e1 = false;
     enum e2 = __traits(compiles, S.a) && T!(S.a); // No property 
S.a
}


More information about the Digitalmars-d-learn mailing list