16 template <
int dimensions>
class id;
17 template <
int dimensions>
class range;
20 template <
int Dims,
bool WithOffset>
struct ItemBase;
22 template <
int Dims>
struct ItemBase<Dims, true> {
25 return (Rhs.MIndex == MIndex) && (Rhs.MExtent == MExtent) &&
26 (Rhs.MOffset == MOffset);
33 return MIndex[0] - MOffset[0];
36 return (MIndex[0] - MOffset[0]) * MExtent[1] + (MIndex[1] - MOffset[1]);
38 return ((MIndex[0] - MOffset[0]) * MExtent[1] * MExtent[2]) +
39 ((MIndex[1] - MOffset[1]) * MExtent[2]) + (MIndex[2] - MOffset[2]);
47 template <
int Dims>
struct ItemBase<Dims, false> {
50 return (Rhs.MIndex == MIndex) && (Rhs.MExtent == MExtent);
64 return MIndex[0] * MExtent[1] + MIndex[1];
66 return (MIndex[0] * MExtent[1] * MExtent[2]) + (MIndex[1] * MExtent[2]) +