auto ref escaping local variable

Stefan Koch via Digitalmars-d digitalmars-d at puremagic.com
Mon Jan 23 22:51:40 PST 2017


On Tuesday, 24 January 2017 at 00:52:34 UTC, Robert burner 
Schadek wrote:
> I have this program that used to compile with 72 but with 73 
> dmd is complaining that
> "Error: escaping reference to local variable t"
>
> auto ref f2(T)(auto ref T t, auto ref T s) {
> 	return t;
> }
>
> auto ref f1(T)(auto ref T t, auto ref T s) {
> 	return f2(t, s);
> }
>
> unittest {
> 	int a = f1(1,2);
> }
>
> I'm not sure why, or how to fix that.
>
> https://issues.dlang.org/show_bug.cgi?id=17117

Seems to work as expected.
The literals 1,2 cannot be ref.
Therefore it's a normal parameter.
A function parameter is the same as a local
hence retuning a ref to it will cause this to happen.



More information about the Digitalmars-d mailing list