Trolling a bit: Should this invariant always hold? assert(equal(range.retro.array, range.array.retro)); Can you find a definition of `range`, using only `std.algorithm` verbs (ie. no custom ranges), that violates it? (And no peeking at my recently-filed bug reports!)