On Tue, Jan 15, 2013 at 03:59:17PM -0500, Andrei Alexandrescu wrote: > On 1/15/13 2:07 PM, Phil Lavoie wrote: > >Continuing with reversible ranges: > > I don't think .reverse will take us far enough. Won't work with > arrays which kinda puts a monkey wrench into everything. [...]
Not really. We can define an array wrapper with a .reverse that returns the original array, something like: // In std.array auto reverse(R)(R array) if (is(R _ : E[], E) { static struct ReverseArray { R[] src; @property auto front() { return src[$-1]; } @property bool empty() { return src.empty; } @property void popFront() { src = src[0..$-1]; } @property auto reverse() { return src; } ... // other wrapper methods } return ReverseArray(array); } This will let you implement rfind in a way that returns the original array. T -- Not all rumours are as misleading as this one.