Idiomatic way to process const/immutable arrays as ranges
Dicebot
m.strashun at gmail.com
Mon Feb 11 09:01:53 PST 2013
On Monday, 11 February 2013 at 16:35:22 UTC, Steven Schveighoffer
wrote:
> in means "const scope". scope is a no-op, const makes the
> array const, including the pointer length.
>
> const(T)[] means, the ELEMENTS are const, but the pointer and
> length can be changed. This makes it a valid input range.
>
> Since your function is making a copy of the data, this should
> be fine.
>
> Your explanation is difficult to understand, I'm basically
> going on what your code does. If you change "in string[]" to
> "const(string)[]", the function should compile.
I know all of this. And I need guarantees that initial slice will
always start at the very same point and will never be consumed by
any part of this function. Thus, I do not need tail const and in
is exactly what I want. But I see no reason why I can't copy
slice pointers to create a new tail const range to consume.
To sum up: I want to maintain full const for parameter
range/slice but be able to create a tail const range from it
every time I want to actually consume it. Without copying data
itself.
More information about the Digitalmars-d-learn
mailing list