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.

Reply via email to