Is it possible to use a template to choose between foreach and foreach_reverse?

pineapple via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jun 4 10:16:45 PDT 2016


On Saturday, 4 June 2016 at 15:43:01 UTC, Mihail K wrote:
> As far as I recall, foreach_reverse is deprecated in favour of 
> range operations.
> ie.
>
>   import std.algorithm, std.range;
>
>   static if(forward)
>   {
>       items.each!(item => doStuff());
>   }
>   else
>   {
>       items.retro.each!(item => doStuff());
>   }
>
> As for your question, I suggest writing a range function that 
> calls retro conditionally. Something like,
>
>   items.direction!(forward).each!(item => doStuff());

Won't this pattern fail if items is a type implementing opApply 
and/or opApplyReverse?


More information about the Digitalmars-d-learn mailing list