DIP69 - Implement scope for escape proof references
Nick Treleaven via Digitalmars-d
digitalmars-d at puremagic.com
Sun Dec 7 08:58:57 PST 2014
On 05/12/2014 23:58, Walter Bright wrote:
>> 2) `scope ref` return values cannot be stored.
>>
>> scope ref int foo();
>> void bar(scope ref int a);
>>
>> foo().bar(); // allowed
>> scope tmp = foo(); // not allowed
>> tmp.bar();
>
> Right
From the DIP:
"The lifetime of a scope return value is the lifetime of an rvalue. It
may not be copied in a way that extends its life."
With part of the example:
scope int* foo();
...
int* p = foo(); // Error, lifetime(p) is ∞
Maybe the error should be 'scope return value cannot be stored', because
otherwise p could be inferred as scope.
More information about the Digitalmars-d
mailing list