void foo(ref int a) { a = 5; } void main() { int a = 0; int* aptr = &a; foo(*aptr); assert(a == 5); a = 0; int b = *aptr; foo(b); assert(b == 5); assert(a == 0); }
The fact that adding an explicit temporary changes the semantics seems weird to me.
void foo(ref int a) { a = 5; } void main() { int a = 0; int* aptr = &a; foo(*aptr); assert(a == 5); a = 0; int b = *aptr; foo(b); assert(b == 5); assert(a == 0); }
The fact that adding an explicit temporary changes the semantics seems weird to me.