So what does (inout int = 0) do?

w0rp via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 15 00:37:29 PDT 2016


On Friday, 15 April 2016 at 07:33:42 UTC, w0rp wrote:
> I think it has something to do with making the function, in 
> this case a lambda, inout, so that it can accept inout types. 
> Then the typeof bit is a weird way to writing something like 
> __traits(compiles, ...) , because functions which have no type 
> result in void, and that fails the typeof check.
>
> If we do end up replacing inout with something else, I would 
> like something which solves the problem of declaring functions 
> returning ranges of either mutable, const, or immutable. I've 
> struggled with that before: 
> https://github.com/w0rp/dstruct/blob/master/source/dstruct/graph.d#L628

To clarify my example. My problem was that I had a container 
which was immutable, and I wanted a range over the immutable 
elements, where the range itself is of course mutable. Getting 
that to work was a tad tricky. You can't take an inout() 
container and return an inout() range, because then an immutable 
container will produce an immutable range, which isn't useful. I 
don't think you can return a mutable range containing inout() 
elements either.


More information about the Digitalmars-d mailing list