http://d.puremagic.com/issues/show_bug.cgi?id=10138
--- Comment #5 from Kenji Hara <k.hara...@gmail.com> 2013-05-27 15:39:22 PDT --- (In reply to comment #4) > Here's the thing, though. In that phobos pull, monarchdodra commented with: > > "Finally, I gave Scoped an @disabled this() to prevent our smarter users from > trying to build a Scoped using typeof." > > It seems like he is actively trying to *disallow* using either ReturnType or > typeof in order to create a scoped field variable. > > But, typeof still works. In 2.063 your example code will become: [snip] You are confusing about @disable for `Scoped` struct default construction and calling `scoped` function with zero argument. If new A() is valid, scoped!A() is also valid. The latter is corresponding to the former. It's the design of scoped utility. > So now I can't tell whether we *support* using scoped field variables or is > the > above just a hack? I need to know what to put in the changelog. The rejected case from 2.063 is this: class A { this() {} this(int) {} } class B { typeof(scoped!A()) a; this() // L12 { //a = scoped!A(); //a = scoped!A(1); } } Output: test.d(12): Error: constructor test.B.this field a must be initialized in constructor The field B.a is must be initialized in constructor, comes from the @disable this() defined in typeof(scoped!A()) struct. However, getting the type of Scoped struct by using typeof is still allowed. So typeof(scoped!A()) a; is valid from 2.063. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------