On Monday, 5 January 2015 at 14:00:13 UTC, Steven Schveighoffer wrote:
On 1/5/15 8:06 AM, deadalnix wrote:
On Monday, 29 December 2014 at 20:26:27 UTC, Steven Schveighoffer wrote:
On 12/29/14 2:50 PM, Walter Bright wrote:
On 12/29/2014 5:53 AM, Steven Schveighoffer wrote:
On 12/28/14 4:33 PM, Walter Bright wrote:
inout is not transitive, so a ref on the container doesn't apply to a ref on the contents if there's another level of indirection in there.
I'm not sure what you mean by this, but inout as a type modifier is
definitely
transitive.

As a type modifier, yes, it is transitive. As transferring lifetime to
the return value, it is not.


I strongly suggest not to use inout to mean this. This idea would be a
disaster.

On the other hand, inout IS a disaster, so why not ?

I strongly disagree :) inout enables so many things that just aren't possible otherwise.

Most recent example: https://github.com/D-Programming-Language/druntime/pull/1079

inout only gets confusing when you start using inout delegates.

-Steve

IMO, inout (and const/immutable to a degree) is a failure for use with class/struct methods. This became clear to me when trying to use it for the toString implementation of Nullable.

Reply via email to