[phobos] Why isn't Joiner a forward range?

Andrei Alexandrescu andrei at erdani.com
Mon Aug 16 21:42:51 PDT 2010


The reason is that joiner does not only consume its range argument, it 
eats every item of every item of the range argument (which must be a 
range of ranges). Therefore, it destructively chews through its input.

Andrei

David Simcha wrote:
> Why is std.algorithm.joiner explicitly *not* a forward range even when 
> it can be?  This is not an oversight.  It appears to be an explicit 
> decision.  From the unittest:
> 
>     static assert(isInputRange!(typeof(joiner([""], ""))));
>     static assert(!isForwardRange!(typeof(joiner([""], ""))));
> 
> Maybe I'm missing something obvious, but I just can't think of any good 
> reason for this decision.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos


More information about the phobos mailing list