April 14, 2013 CTFE cannot be used when a struct has "uninitialized" static array union members? | ||||
---|---|---|---|---|
| ||||
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() { } |
April 14, 2013 Re: CTFE cannot be used when a struct has "uninitialized" static array union members? | ||||
---|---|---|---|---|
| ||||
Posted in reply to simendsjo | Filed a bug. http://d.puremagic.com/issues/show_bug.cgi?id=9932 |
Copyright © 1999-2021 by the D Language Foundation