On Monday, 30 January 2017 at 19:05:33 UTC, Q. Schroll wrote:
Can't we make "in" mean "const scope ref", that binds on
r-values, too? Effectively, that's (similar to) what "const T&"
in C++ means. It's a non-copying const view on the object.
'ref' being separate from 'in' allows you to use both:
foo(in ref T x);
foo(in T* x);
However, I agree that 'in' should be the opposite of 'out' (const
scope ref). Making the 'in' and 'out' keywords semantically
asymmetrical just to save a few key strokes is dumb.
We have the longstanding problem, one must overload a function
to effectively bind both l- and r-values. That is what I'd
suppose to be the dual to "out".
+1 on allowing rvalue to bind to 'const scope ref'...or 'in' done
right.