On Thursday, 18 February 2021 at 21:08:45 UTC, Adam D. Ruppe wrote:
On Thursday, 18 February 2021 at 20:47:33 UTC, Mike Brown wrote:
[...]

My c++ is rusty af but yes I think so.

A d slice is `struct slice { size_t length; T* ptr; }` so when in doubt just think back to what that does.

[...]

And that makes this ref iffy. Since it is already passed as a ptr+length pair, you rarely need ref on it. Only when you'd use a char** in C; that is, when you can reassign the value of the pointer and have the caller see that change (e.g. you are appending to it). If you're just looking, no need for ref.

[...]

I do it in two steps:

piece = input[0 .. mark]; // get piece out
input = input[mark .. $]; // advance the original slice


Note that such operations are just `ptr += mark; length -= mark;` so they are very cheap.

Thank you. Is there a standardised type to make "mark"? size_t or is a normal integer suitable?

Reply via email to