16 template<
class container_t,
class derived_t =
void>
30 template<
class container_t,
class derived_t =
void>
34 std::conditional_t<std::same_as<derived_t, void>, iterator<container_t>, derived_t>>
44 [[nodiscard]] constexpr
typename super_type::reference operator*()
const noexcept
46 return super_type::get();
48 [[nodiscard]] constexpr
typename super_type::pointer operator->()
const noexcept
50 return &super_type::get();
52 [[nodiscard]] constexpr
typename super_type::reference operator[](
typename super_type::size_type i)
const noexcept
54 return super_type::get(i);
69 template<
class container_t,
class derived_t>
73 std::conditional_t<std::same_as<derived_t, void>, const const_iterator<container_t>, derived_t>>
77 std::conditional_t<std::same_as<derived_t, void>,
const const_iterator, derived_t>>;
85 [[nodiscard]] constexpr
typename super_type::const_reference operator*()
const noexcept
87 return super_type::get();
89 [[nodiscard]] constexpr
typename super_type::const_pointer operator->()
const noexcept
91 return &super_type::get();
93 [[nodiscard]] constexpr
typename super_type::const_reference operator[](
94 typename super_type::size_type m)
const noexcept
96 return super_type::get(m);
100 template<
class container_t,
class derived_t =
void>
114 template<
class container_t,
class derived_t =
void>
118 std::conditional_t<std::same_as<derived_t, void>, reverse_iterator<container_t>, derived_t>>
124 std::conditional_t<std::same_as<derived_t, void>,
reverse_iterator, derived_t>>;
129 [[nodiscard]] constexpr
typename super_type::reference operator*()
const noexcept
131 return super_type::get();
133 [[nodiscard]] constexpr
typename super_type::pointer operator->()
const noexcept
135 return &super_type::get();
137 [[nodiscard]] constexpr
typename super_type::reference operator[](
typename super_type::size_type m)
const noexcept
139 return super_type::get(m);
154 template<
class container_t,
class derived_t>
158 std::conditional_t<std::same_as<derived_t, void>, const const_reverse_iterator<container_t>, derived_t>>
171 [[nodiscard]] constexpr
typename super_type::const_reference operator*()
const noexcept
173 return super_type::get();
175 [[nodiscard]] constexpr
typename super_type::const_pointer operator->()
const noexcept
177 return &super_type::get();
179 [[nodiscard]] constexpr
typename super_type::const_reference operator[](
180 typename super_type::size_type m)
const noexcept
182 return super_type::get(m);
Basic contiguous forward iterator, meaning that incrementing an iterator will lead it moving forward.
Base contiguous iterator with a container pointer and an index.
Basic contiguous reverse iterator, meaning that incrementing an iterator will lead it moving backward...
Const random access iterator type.
Const reverse random access iterator type.
Non-const random access iterator type.
Non-const random access reverse iterator type.