https://issues.dlang.org/show_bug.cgi?id=12602
Issue ID: 12602 Summary: [CTFE] Changes to an array slice wrapped in a struct do not propogate to the original Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: DMD Assignee: nob...@puremagic.com Reporter: dmitry.o...@gmail.com Simplified code, shows difference between R-T and C-T: struct Result { uint[] source; } auto wrap(uint[] r) { return Result(r); } auto testWrap() { uint[] dest = [1, 2, 3, 4]; auto ra = wrap(dest[0..2]); auto rb = wrap(dest[2..4]); foreach (i; 0..2) rb.source[i] = ra.source[i]; return dest; } @system void main() { static y = testWrap(); auto y2 = testWrap(); import std.conv; assert(y == y2, text(y, " vs ", y2)); //[1, 2, 3 ,4] vs [1, 2, 1, 2] } Tested with DMD 9c34e808dd83ecf810a2f87c73c8d8a95e90b5cc --