nested inout return type

Simon Bürger via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jun 14 09:17:16 PDT 2016


On Tuesday, 14 June 2016 at 14:47:11 UTC, Steven Schveighoffer 
wrote:
>> * only do one mutable version of opSlice
>> * add implicit cast (using "alias this") for const(Slice!T) ->
>> Slice!(const(T)).
>
> Interesting, but unfortunately, the compiler isn't eager about 
> this conversion. auto x = s[5 .. 7] isn't going to give you a 
> Slice!(const(T)), like an array would. But I like the idea.

Hm, you are right, in fact it doesn't work. Somehow it seemed to 
in my usecase. Well, triplicate it is then. Which isn't that bad 
using something like

auto opSlice(size_t a, size_t b)
{
    // actual non-trivial code
}

auto opSlice(size_t a, size_t b) const
{
    return Slice!(const(T))(ptr, length).opSlice(a,b);
}

auto opSlice(size_t a, size_t b) immutable
{
    return Slice!(immutable(T))(ptr, length).opSlice(a,b);
}


More information about the Digitalmars-d-learn mailing list