/* TEST_OUTPUT: --- fail_compilation/fail11151.d(30): Error: overlapping initialization for field `a` and `y` --- */ //extern(C) int printf(const char*, ...); union U { struct { align(1) long a; align(1) int b; } struct { align(1) int x; align(1) long y; } } void main() { static assert(U.a.offsetof == 0); static assert(U.b.offsetof == 8); static assert(U.x.offsetof == 0); static assert(U.y.offsetof == 4); U u = {a:1, y:2}; // overlapped initializing U.a and U.y //printf("u.a = %lld\n", u.a); // 8589934593 , Wrong! //printf("u.b = %d\n", u.b); // 0 //printf("u.x = %d\n", u.x); // 1 //printf("u.y = %lld\n", u.y); // 2 }