On Sunday, 17 June 2018 at 12:23:55 UTC, Steven Schveighoffer wrote:
On 6/17/18 7:07 AM, Vijay Nayar wrote:
This code breaks with the following error:
void main()
{
     import std.range;
       int[] vals = [];
     vals.put(3);
}
/src/phobos/std/range/primitives.d(2328): Attempting to fetch the front of an empty array of int

The following code has no error:
void main()
{
     import std.range;
       int[] vals = [1];
     vals.put(3);
}

Why is range.put() not allowed for empty arrays?



range.put fills an existing array like a buffer, it does not append (as I'm guessing you are expecting). Use std.array.Appender to get append behavior.

Or simply ~= if you want to use built-in arrays (works with Appender too FWIW).

Reply via email to