DIP69 - Implement scope for escape proof references
Dicebot via Digitalmars-d
digitalmars-d at puremagic.com
Tue Dec 9 20:34:50 PST 2014
On Tuesday, 9 December 2014 at 22:24:51 UTC, Walter Bright wrote:
>>> front() should return a 'scope ref string'.
>>
>> That seems to contradict your other statement:
>>
>>> A 'scope ref' parameter may not be returned as a 'ref' or a
>>> 'scope ref'.
>
> Just make it a 'ref' parameter.
>
>
>> Please check `foo()` once more - it needs to accept scope
>> (ref) to be able to
>> accept ByLine.front as an argument. And it also needs to pass
>> it down the call
>> chain - but returning `input` by reference is illegal
>> according to
>> abovementioned rule.
>
> It can still be passed down as a 'ref' parameter.
But as far as I understand the spec it will result it this code
failing too:
auto r = ["aaa", "bbb", "ccc"].map!foo;
// should compile but will fail because foo returns scope ref:
string s = r.front;
What I mean is that in current proposal it is impossible to
transfer scope information down the call chain - either function
always returns scope ref or never. Which implies the necessity of
something like `auto scope`...
More information about the Digitalmars-d
mailing list