Andrei Alexandrescu wrote:
Time has come to make a decision on implementing Steven Schveighoffer's
proposal:
Unmentioned in the proposal is is inout a type constructor or a storage
class? For example,
U[inout(T)]* foo(inout(X)*** p) { ... }
This is much more complex to implement than only allowing inout at the
top level, i.e. as a storage class.
I also prefer the idea of inout on the return type being assumed, rather
than explicit:
T foo(inout U p) { ... }
Yes, there's the legacy compatibility issue there. A long time ago, I
suggested using the keyword 'return' for that, instead of inout:
T foo(return U p) { ... }
which looks fine until you use it for member functions:
T foo() return { ... }
ugh.