45 template<
typename,
typename,
typename,
bool>
48 static constexpr uint ELEM_ID = ElementType::ELEMENT_ID;
50 using VT = std::conditional_t<CNST, const ElementType, ElementType>;
51 using PE = std::conditional_t<CNST, const ParentElement*, ParentElement*>;
54 PE parentElement =
nullptr;
58 using value_type = VT*;
59 using reference = VT*;
61 using iterator_category = std::random_access_iterator_tag;
91 false>&
oi)
requires (
CNST ==
true)
92 : mIt(
oi.mIt), parentElement(
oi.parentElement) {};
94 value_type operator*()
const
103 auto operator->()
const {
return FakePointerWithValue(**
this); }
105 bool operator==(
const PointerFromIndexIterator& oi)
const
107 return mIt == oi.mIt;
110 bool operator!=(
const PointerFromIndexIterator& oi)
const
112 return !(*
this == oi);
115 PointerFromIndexIterator& operator++()
121 PointerFromIndexIterator operator++(
int)
128 PointerFromIndexIterator& operator--()
134 PointerFromIndexIterator operator--(
int)
141 PointerFromIndexIterator& operator+=(difference_type n)
147 PointerFromIndexIterator& operator-=(difference_type n)
153 PointerFromIndexIterator operator+(difference_type n)
const
160 PointerFromIndexIterator operator-(difference_type n)
const
167 difference_type operator-(
const PointerFromIndexIterator& oi)
const
172 value_type operator[](difference_type i) {
return *(*
this + i); }
174 bool operator<(
const PointerFromIndexIterator& oi)
const
179 bool operator>(
const PointerFromIndexIterator& oi)
const
184 bool operator<=(
const PointerFromIndexIterator& oi)
const
186 return mIt <= oi.mIt;
189 bool operator>=(
const PointerFromIndexIterator& oi)
const
191 return mIt >= oi.mIt;
197 PointerFromIndexIterator<Iterator, ElementType, ParentElement, true>;
PointerFromIndexIterator(const PointerFromIndexIterator< Iterator, ElementType, ParentElement, false > &oi)
Constructor from a non-const iterator.
Definition pointer_from_index_iterator.h:87