On Thursday, 12 December 2013 at 21:55:20 UTC, Ali Çehreli wrote:
The third condition that is checked to determine whether it is
an OutputRange is indeed assignment to front.
http://dlang.org/phobos/std_range.html#.put
That condition is what makes a slice an OutputRange, which
causes the super confusing state of "output range losing
elements after put'ting": :)
import std.range;
void main()
{
auto s = [ 1, 2, 3 ];
s.put(10);
assert(s.length == 2); // PASSES! :p
}
Ouch. That surely is confusing. Why don't arrays provide .put
which appends the element?