Help me write "saveAll"

Timon Gehr timon.gehr at gmx.ch
Fri Dec 21 18:58:15 PST 2012


On 12/21/2012 06:01 PM, monarch_dodra wrote:
> There are a lot of algorithms in std.algorithm that operate on
> "foo(Range, Needles...)(Range range, Needles needles)".
>
> Needles can be anything, in particular, either an "element" or a "range".
>
> The thing is that every now and then, you want to save the entirety of
> (the ranges) inside needles. EG, I want to be able to write:
> foo(range, needles.saveAll);
>
> I'm having trouble. I did two iterations:
>
> //----
> auto saveAll(Ranges...)(Ranges ranges) @property
> {
>      auto ret = ranges;
>      foreach (Index, Type; Ranges)
>          static if (isForwardRange!Type)
>              ret[Index] = ranges[Index];
>      return ret;
> }
> //----
> This doesn't work, because: Error: functions cannot return a tuple
> So that's that.
> ...

Use a phobos tuple?

return tuple(ret)

The caller can use .expand.



More information about the Digitalmars-d-learn mailing list