On Saturday, 4 January 2020 at 19:56:54 UTC, Robert M. Münch
But it doesn't seem to be an L-value... which I don't
understand. I thought buf returns a temporary dynamic array
initialized with the buf content.
The problem here is indeed ref, the function there tries to
update the slice so it point to the next element and that
requires a named variable.
Generally speaking, if your thing is not tied directly to a named
variable it can update, it cannot be ref.
So your buf there refers to a named variable, which is good
enough... but the  cannot possibly update because buf is
Just assigning to a temporary in the middle can fix this for you:
dchar remainingItems = buf;
// note that length of remainingItems will now be smaller than it