On Monday, 11 February 2013 at 15:06:26 UTC, Steven Schveighoffer wrote:
On Mon, 11 Feb 2013 09:46:54 -0500, Dicebot <m.stras...@gmail.com> wrote:

This question is so stupid I am just struck with trying to chose the "good" solution.

Consider this code:

string func(in string[] args)
{
return args.join(" "); // compile error, args is not an input range
}

It is somewhat expected as you can hardly popFront on a const range. But then question is: how can I wrap const slice into a mutable range without copying data (using standard language/library solution)? Of course, I can do .dup.join, but there is no real need to do copy, even a shallow one.

What you are looking for is a tail-const array:

string func(const(string)[] args)

This will allow traversal, and not allow modification of the elements.

-Steve

No, I do not look for tail const. I don't want to allow head-mutability for parameter, but I want to make a mutable slice-range for it later. That does not break any const guarantees and should be safely possible.

Reply via email to