https://issues.dlang.org/show_bug.cgi?id=18478

--- Comment #4 from jpdut...@gmail.com ---

(In reply to Walter Bright from comment #2)
> The error is on the function returning the reference, not the function using
> (or not using) the return value. Because of separate compilation, it has to
> be this way.

I assume you are speaking about fn2.

Storing the result to a temporary before returning removes the error:

auto tmp = fn1_normal(a);
return tmp;

I would expect the compiler to implicitly decay the returned reference to a
normal value when it sees that fn2 does not return by reference, the same way
it is done when first saving it into a temporary.

In any case, the error "returning fn1_normal(a) escapes a reference to local
variable a" does not describe what is actually going on, because no reference
would actually escape even if this error was disabled.

--

Reply via email to