Thanks for your reply Tim. Are x and y offsets with respect to the "parent" range cr? > > If so, you can achieve this with a 1-liner, > > CartesianRange(cr.start+x-1, cr.start+y-1) >
No, not "Cartesian" offsets, but "linear" offsets transformed to Cartesian equivalent. That's why I think I need the dimensions of the parent range. julia> I1 = CartesianIndex((3,3,3)) > CartesianIndex{3}((3,3,3)) > > julia> I2 = CartesianIndex((5,1,7)) > CartesianIndex{3}((5,1,7)) > > julia> R = CartesianRange(I1, I2) > CartesianRange{CartesianIndex{3}}(CartesianIndex{3}((3,3,3)),CartesianIndex{3} > > > ((5,1,7))) > As you point out, R here is effectively an empty iterator. However for my use, that same range R could be non-empty if it is a sub-range of a larger enclosing range. Say CartesianSubRange(CartesianRange((8,8,8)), I1, I2)) So I want to iterate within the parent CartesianRange dimensions, from I1 to I2.