Reduced code (Foo originally was BigInt): struct Foo { bool b = false; void opAssign(int x) { this.b = true; } } int foo() { Foo[1] array; foreach (ref item; array) item = 1; return 0; } enum r = foo(); // error void main() { // const r = foo(); // OK } DMD 2.055beta gives: test.d(9): Error: variable __key4 is used before initialization test.d(10): Error: cannot evaluate item.opAssign(1) at compile time test.d(13): Error: cannot evaluate foo() at compile time
https://github.com/D-Programming-Language/dmd/commit/beef649d9b19ce21e75f3d496af0a67844698c41 https://github.com/D-Programming-Language/dmd/commit/469b82d4ced0f6c7efc79f3f9953da83f2f87e63