Idiomatic way to process const/immutable arrays as ranges
Dicebot
m.strashun at gmail.com
Mon Feb 11 07:26:40 PST 2013
On Monday, 11 February 2013 at 15:06:26 UTC, Steven Schveighoffer
wrote:
> On Mon, 11 Feb 2013 09:46:54 -0500, Dicebot
> <m.strashun at 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.
More information about the Digitalmars-d-learn
mailing list