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?

Reply via email to