5 #ifndef VCCC_ITERATOR_REVERSE_ITERATOR_HPP_
6 #define VCCC_ITERATOR_REVERSE_ITERATOR_HPP_
10 #include <type_traits>
31 template<
typename I1,
typename I2>
33 :
negation<sized_sentinel_for<I1, I2>> {};
36 #if __cplusplus < 202002L
38 template<
typename Iter>
58 template<
typename Iter>
70 #if __cplusplus < 202002L
74 template<
typename Iter>
86 constexpr
void iter_swap(
const reverse_iterator<Iter>& x,
const reverse_iterator<Iter2>& y)
93 auto tmp_x = x.base();
94 auto tmp_y = y.base();
std::random_access_iterator_tag random_access_iterator_tag
Definition: iterator_tag.hpp:19
typename iter_reference< T >::type iter_reference_t
Definition: iter_reference_t.hpp:30
typename iter_rvalue_reference< T >::type iter_rvalue_reference_t
Definition: iter_rvalue_reference_t.hpp:33
typename iter_value< T >::type iter_value_t
Definition: iter_value_t.hpp:42
typename iter_difference< T >::type iter_difference_t
Computes the difference type of T
Definition: iter_difference_t.hpp:49
std::bidirectional_iterator_tag bidirectional_iterator_tag
Definition: iterator_tag.hpp:18
Definition: matrix.hpp:495
constexpr vccc::iter_rvalue_reference_t< Iter > iter_move(const std::reverse_iterator< Iter > &i) noexcept(std::is_nothrow_copy_constructible< Iter >::value &&noexcept(vccc::ranges::iter_move(--std::declval< Iter & >())))
Definition: reverse_iterator.hpp:75
constexpr vccc::iter_rvalue_reference_t< Iter > iter_move(const move_iterator< Iter > &i) noexcept(noexcept(vccc::ranges::iter_move(i.base())))
Definition: move_iterator.hpp:92
constexpr void iter_swap(const reverse_iterator< Iter > &x, const reverse_iterator< Iter2 > &y) noexcept(std::is_nothrow_copy_constructible< Iter >::value &&std::is_nothrow_copy_constructible< Iter2 >::value &&noexcept(vccc::ranges::iter_swap(--std::declval< Iter & >(), --std::declval< Iter2 & >())))
Definition: reverse_iterator.hpp:86
constexpr void iter_swap(const move_iterator< Iter > &x, const move_iterator< Iter2 > &y) noexcept(noexcept(vccc::ranges::iter_swap(x.base(), y.base())))
Definition: move_iterator.hpp:99
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
std::conditional_t< random_access_iterator< Iter >::value, random_access_iterator_tag, bidirectional_iterator_tag > iterator_concept
Definition: reverse_iterator.hpp:44
iter_value_t< Iter > value_type
Definition: reverse_iterator.hpp:50
iter_difference_t< Iter > difference_type
Definition: reverse_iterator.hpp:51
typename cxx20_iterator_traits< Iter >::pointer pointer
Definition: reverse_iterator.hpp:52
std::conditional_t< derived_from< typename cxx20_iterator_traits< Iter >::iterator_category, random_access_iterator_tag >::value, random_access_iterator_tag, typename cxx20_iterator_traits< Iter >::iterator_category > iterator_category
Definition: reverse_iterator.hpp:49
iter_reference_t< Iter > reference
Definition: reverse_iterator.hpp:53
Definition: cxx20_iterator_traits.hpp:188
Models std::derived_from
Definition: derived_from.hpp:42
Definition: sized_sentinel_for.hpp:22
Definition: negation.hpp:23
specifies that a bidirectional_iterator is a random-access iterator, supporting advancement in consta...
Definition: random_access_iterator.hpp:120