On Tuesday, 23 June 2015 at 12:45:25 UTC, kink wrote:
On Tuesday, 23 June 2015 at 09:57:26 UTC, Marc Schütz wrote:
To guarantee this from the caller's POV, the callee must be pure and the parameters must be known not to alias each other.

This is obviously true. Rvalues aren't affected as they cannot alias another parameter by definition.

You're right, I didn't think of that! They are not _transitively_ unique, but there can indeed be no other references to the rvalues themselves. So for rvalues, const is enough. Nice :-)

Lvalues are if passed by ref and the same instance is accessible by mutable ref from another parameter or global. But as shown by your example, that danger is always there. The proposed `in` semantics make it less obvious, that's true, but I still think it'd be worth it, as these aliasing bugs are a pain to track down, but in my experience extremely rare.


Reply via email to