http://d.puremagic.com/issues/show_bug.cgi?id=7543
--- Comment #10 from Steven Schveighoffer <schvei...@yahoo.com> 2012-03-09 16:07:27 PST --- (In reply to comment #8) > Indeed. The point is that there are two possible interpretations of the > opApply signature, and the spec isn't clear on which applies: > > (a) the constancy is passed through to the delegate > (b) the delegate has an inout parameter in its own right I think it must be (b). Consider you don't know when the delegate was constructed: void foo(inout(int)* x, inout(int)* delegate(inout(int)* x) dg) { inout(int)* bar(inout(int)* m) { return m;} auto dg2 = &bar; assert(typeof(dg2) == typeof(dg)); // ??? immutable int y = 5; dg2(&y); // ok dg(&y); // must fail! } If the assert doesn't pass, then what is the type of dg vs. dg2? If it passes, then dg and dg2 are interchangeable, and you will violate const (what if x is mutable?). Even if the assert fails, it's going to be way *way* too confusing to have two types that are identical in syntax be actually different types under the hood. We *absolutely* need a new syntax if case (a) is to be included. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------