On Thursday, 3 January 2013 at 05:56:27 UTC, Timon Gehr wrote:
On 01/03/2013 12:48 AM, Jason House wrote:
...


ref int bar()
{
   int i = 7;
   return foo(i);
}

If @safe, this code will not compile.
Error: foo may return a local stack variable
Since "i" is a local variable, "foo(i)" might return it.



ref int baz(int i)
{
   return foo(i);
}

This function is fine. "i" is an input argument so "foo(i)" is
considered to be equivalent to an input argument.


Those two cases are pretty much the same.

If what I suggest is done, they must be differentiated. If you replace "return foo(i)" with "return i", the compiler will already issue an error for the local variable case.

Reply via email to