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.