digitalmars.D.learn - CTFE cannot be used when a struct has "uninitialized" static array
This is probably not a minimal test-case, and I haven't tested with more types, but it shows the problem. // This works struct S { this(int i) { a = i; } union { int a = void; int b = void; } } unittest { auto s = S(1); assert(&s.a == &s.b); enum s2 = S(1); static assert(S(1).a == 1); } // But this doesn't struct S2 { this(int i) { // error at this line a[] = i; } union { int[1] a = void; int[1] b = void; } } unittest { auto s = S2(1); assert(s.a.ptr == s.b.ptr); // bug.d(19): Error: uninitialized variable 'b' cannot be returned from CTFE enum s2 = S2(1); } void main() { }
Apr 14 2013
Filed a bug. http://d.puremagic.com/issues/show_bug.cgi?id=9932
Apr 14 2013