On 2011-01-27 17:52:27 -0500, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> said:
On 1/27/11 4:48 PM, Tomek Sowiński wrote:
Andrei Alexandrescu napisał:
ref returns should be guaranteed to never escape.
Should meaning they're not guaranteed now? I'm curious in what
scenarios they escape.
Any function can take the address of a reference (either a ref
parameter or the result of another function) and squirrel it away.
Even in @safe mode? Being able to take the address of a ref in non-safe
code seems normal to me.
That said, you don't need to take the address of anything to escape a ref:
ref int test() {
int i;
return pass(i);
}
ref int pass(ref int i) {
return i;
}
Now, consider that instead of 'int i' you have a container with
deterministic destruction:
ref int test() {
Container!int a;
return a[0];
}
Same problem.
--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/