On Saturday, 24 March 2018 at 17:34:09 UTC, Manu wrote:
You mutate a temporary that times out at the end of the statement...
your statement is never assigned to anything, and has no effect.

That is solved by having the ref function return its argument (so it can be chained):

struct S;
ref S modify(return ref S s);

S(data).modify.writeln;

This rvalue pattern would be disallowed if argument `s` was const. Why not make `modify` just return a copy then, maybe the optimizer could remove the copy? So that you can also use it with lvalues:

S s;
modify(s);

Reply via email to