http://wiki.dlang.org/DIP25
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Sun Dec 28 10:16:08 PST 2014
On 12/28/14 2:13 AM, Peter Alexander wrote:
> On Sunday, 28 December 2014 at 03:09:20 UTC, Andrei Alexandrescu wrote:
>> Please comment: http://wiki.dlang.org/DIP25
>
> This seems like it may be painful (in terms of breaking existing code):
>
> "Member functions of structs must qualify this with inout if they want
> to return a result by ref that won't outlive this."
>
> This breaks all ranges that return ref front, no? (assuming they aren't
> qualified inout, which appears to be the case in the majority of ranges
> in std.algorithm/range).
Very little breakage I can think of. Ranges usually don't own their payload.
> Clarification: how does this DIP play with auto ref returns? Infer
> non-ref if not qualified inout?
>
> auto ref foo(ref int x) { return x; } // non-ref due to lack of inout
> on x?
"auto" has no meaning there. It does here:
auto ref foo(auto ref int x) { return x; }
This wouldn't compile anymore - inout is needed for x as well.
Andrei
More information about the Digitalmars-d
mailing list