/* TEST_OUTPUT: --- fail_compilation/diag11756.d(15): Error: cannot read uninitialized variable `cnt` in CTFE fail_compilation/diag11756.d(34): called from here: `foo.ptr2.opAssign(Ptr(& n))` fail_compilation/diag11756.d(39): called from here: `test()` fail_compilation/diag11756.d(39): while evaluating: `static assert(test())` --- */ struct Ptr { void opAssign(Ptr other) { (*cnt)--; // error cnt = other.cnt; (*cnt)++; } size_t *cnt; } union Foo { size_t *ptr1; Ptr ptr2; } bool test() { Foo foo; size_t cnt = 1; foo.ptr1 = &cnt; size_t n; foo.ptr2 = Ptr(&n); assert(cnt == 0); return true; } static assert(test());