Returning value by ref does not create a ref. Is this intentional?

Tejas notrealemail at gmail.com
Wed Jan 5 04:35:12 UTC 2022


```d
import std.stdio:writeln;

ref int func(return ref int a){
     a = 6; // modifies a as expected
     return a;
}
void main(){
     int a = 5;
     auto c = func(a); // I expected c to alias a here
     c = 10; // Expected to modify a as well
     writeln(a); // prints 6 :(
}
```

The [spec](https://dlang.org/spec/function.html#ref-functions) 
states:

> Ref functions allow functions to return by reference, meaning 
> that the return value must be an lvalue, and the lvalue is 
> returned, not the rvalue.



Then why does  the reference to `a` not get returned ?



More information about the Digitalmars-d-learn mailing list