On Wednesday, 5 January 2022 at 04:35:12 UTC, Tejas wrote:
```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 ?

It is returned. But initializing `c` with it makes a copy. This will mutate `a`:

```
func(a) = 10;
```

Reply via email to