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