http://d.puremagic.com/issues/show_bug.cgi?id=6052
Summary: [CTFE] Structs elements in an array are treated like reference type Product: D Version: D2 Platform: Other OS/Version: Mac OS X Status: NEW Keywords: wrong-code Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: kenn...@gmail.com --- Comment #0 from kenn...@gmail.com 2011-05-24 09:06:57 PDT --- Test case: -------------------------------------------------- struct Bug6052 { int a; } bool bug6052() { Bug6052[2] arr; for (int i = 0; i < 2; ++ i) { Bug6052 el = {i}; Bug6052 ek = el; arr[i] = el; el.a = i + 2; assert(ek.a == i); // ok assert(arr[i].a == i); // fail } assert(arr[1].a == 1); // ok assert(arr[0].a == 0); // fail return true; } static assert(bug6052()); -------------------------------------------------- x.d(16): Error: assert(arr[cast(uint)i].a == i) failed x.d(23): Error: cannot evaluate bug6052() at compile time x.d(23): Error: static assert (bug6052()) is not evaluatable at compile time -------------------------------------------------- Setting a struct value on a array should perform a bit-copy, so modifying 'el' should not affect 'arr[i]', but currently CTFE does it wrongly. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------