http://d.puremagic.com/issues/show_bug.cgi?id=11343
--- Comment #2 from Kenji Hara <[email protected]> 2013-10-24 17:18:06 PDT --- (In reply to comment #0) > Code: > ---- > import std.stdio; > > enum Foo { > A = 1, > B = 2 > } > > struct Test { > public: > const ubyte[Foo] test; > > this(Foo f) { > if (Foo.A & f) > this.test[Foo.A] = 1; > if (Foo.B & f) > this.test[Foo.B] = 2; > } > } > > void main() { > Test t = Test(Foo.A); > } > ---- > > Flag_TEst.d(16): Error: multiple field test initialization > > Tested with the latest beta. > Worked in 2.063.2 It's intended behavior change introduced by fixing bug 9665. Non-mutable field initialization is now allowed just only once. So, in this case, you need to create a temporary mutable AA, then initialize Test.test by that. struct Test { public: const ubyte[Foo] test; this(Foo f) { ubyte[Foo] tmp; if (Foo.A & f) tmp[Foo.A] = 1; if (Foo.B & f) tmp[Foo.B] = 2; this.test = tmp; } } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
