transporting qualifier from parameter to the return value
Jason House
jason.james.house at gmail.com
Wed Dec 16 05:48:54 PST 2009
Walter Bright Wrote:
> 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.
I initially liked return as the keyword as well, but it's problematic for intermediate variables.
inout(U) foo(inout(T) t){
inout V v = t.someMember.somethingElse;
return bar(v);
}
More information about the Digitalmars-d
mailing list