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.