Transient ranges

Alex Parrill via Digitalmars-d digitalmars-d at puremagic.com
Sun May 29 20:46:07 PDT 2016


On Sunday, 29 May 2016 at 17:45:00 UTC, Steven Schveighoffer 
wrote:
> On 5/27/16 7:42 PM, Seb wrote:
>
>> So what about the convention to explicitely declare a 
>> `.transient` enum
>> member on a range, if the front element value can change?
>
> enum isTransient(R) = is(typeof(() {
>    static assert(isInputRange!R);
>    static assert(hasIndirections(ElementType!R));
>    static assert(!allIndrectionsImmutable!(ElementType!R)); // 
> need to write this
> }));
>
> -Steve

allIndrectionsImmutable could probably just be is(T : immutable) 
(ie implicitly convertible to immutable). Value types without (or 
with immutable only) indirections should be convertible to 
immutable, since the value is being copied.



More information about the Digitalmars-d mailing list