decodeGrapheme & static array

Adam D. Ruppe destructionator at gmail.com
Sat Jan 4 20:12:20 UTC 2020


On Saturday, 4 January 2020 at 19:56:54 UTC, Robert M. Münch 
wrote:
> 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 
statically sized.

Just assigning to a temporary in the middle can fix this for you:

dchar[] remainingItems = buf[];
decode(remainingItems);
// note that length of remainingItems will now be smaller than it 
started


More information about the Digitalmars-d-learn mailing list