DIP69 - Implement scope for escape proof references

via Digitalmars-d digitalmars-d at puremagic.com
Mon Dec 8 08:27:18 PST 2014


On Monday, 8 December 2014 at 16:04:42 UTC, Steven Schveighoffer 
wrote:
> On 12/8/14 10:45 AM, "Marc =?UTF-8?B?U2Now7x0eiI=?= 
> <schuetzm at gmx.net>" wrote:
>> On Monday, 8 December 2014 at 15:12:51 UTC, Steven 
>> Schveighoffer wrote:
>>> I think you should eliminate scope returns then. They are not 
>>> useful.
>>> I can't think of a single reason why a newly allocated via GC 
>>> or
>>> global reference return should have to be restricted to exist 
>>> only
>>> within the statement. Both have infinite lifetimes.
>>
>> It's for references to objects that are owned by the function 
>> (or object
>> of which the function is a method). These don't have infinite 
>> lifetimes.
>
> Why not? An object is allocated on the heap, and has infinite 
> lifetime.

"object" as in "instance of struct" ;-)

And I was referring to objects owned by something with finite 
lifetime, e.g. a container.

     struct Array(T) {
         scope ref T opIndex(size_t);
     }

     Array!int container;
     ref x = container[42];  // no
     container[42]++;        // yes
     writeln(container[42]); // yes


More information about the Digitalmars-d mailing list