Slice/range with reversed order of iteration for all dimensions.
auto slice = iota(2, 3); static immutable reversed = [[5, 4, 3], [2, 1, 0]]; assert(slice.retro == reversed); assert(slice.canonical.retro == reversed); assert(slice.universal.retro == reversed); static assert(is(typeof(slice.retro.retro) == typeof(slice))); static assert(is(typeof(slice.canonical.retro.retro) == typeof(slice.canonical))); static assert(is(typeof(slice.universal.retro) == typeof(slice.universal)));
Ranges
import mir.algorithm.iteration: equal; import std.range: std_iota = iota; assert(std_iota(4).retro.equal(iota(4).retro)); static assert(is(typeof(std_iota(4).retro.retro) == typeof(std_iota(4))));
Reverses order of iteration for all dimensions.