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=?=
<schue...@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