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.