Using struct members bypasses the compiler check for escaping reference to local variables. This code should not compile: -------------------- struct S { int a; } ref int test() { S s; s.a = 42; return s.a; } void main() { auto p = &test(); // reference to the local variable assert(test() == 42); // assertion fails with -O } -------------------- Moreover, test() in the above example returnes a corrupted (or uninitialized) value when optimization is on. This causes unittests for std.functional.toDelegate() to segfault.
*** This issue has been marked as a duplicate of issue 13902 ***