21template<concepts::B
idirectionalIterator Iter>
24 ReverseIterator<Iter>,
25 meta::Conditional<concepts::RandomAccessIterator<Iter>, RandomAccessIteratorTag, BidirectionalIteratorTag>,
26 meta::IteratorValue<Iter>, meta::IteratorSSizeType<Iter>> {
45 m_base = other.base();
49 constexpr auto base() const -> Iter {
return m_base; }
51 constexpr auto operator*() const -> decltype(auto) {
57 requires(
concepts::Pointer<Iter> || requires(Iter const i) { i.operator->(); })
79 auto temp = self.base();
83 template<concepts::IndirectlySwappable<Iter> Other>
94template<
typename Iter, concepts::EqualityComparableWith<Iter> U>
96 return a.base() == b.base();
99template<
typename Iter, concepts::ThreeWayComparableWith<Iter> U>
104template<
typename Iter,
typename U>
106 return b.base() - a.base();
109template<concepts::B
idirectionalIterator Iter>
Definition reverse_iterator.h:26
constexpr ReverseIterator()=default
constexpr ReverseIterator(ReverseIterator< U > const &other)
Definition reverse_iterator.h:39
constexpr void back_one()
Definition reverse_iterator.h:67
constexpr auto operator=(ReverseIterator< U > const &other) -> ReverseIterator &
Definition reverse_iterator.h:44
constexpr auto base() const -> Iter
Definition reverse_iterator.h:49
constexpr void advance_n(SSizeType n)
Definition reverse_iterator.h:69
constexpr friend auto tag_invoke(types::Tag< iterator_move >, ReverseIterator const &self) -> decltype(auto) requires(
Definition reverse_iterator.h:76
constexpr auto operator*() const -> decltype(auto)
Definition reverse_iterator.h:51
constexpr auto operator->() const
Definition reverse_iterator.h:56
constexpr void advance_one()
Definition reverse_iterator.h:66
constexpr friend void tag_invoke(types::Tag< iterator_swap >, ReverseIterator const &a, ReverseIterator< Other > const &b)
Definition reverse_iterator.h:84
constexpr ReverseIterator(Iter iter)
Definition reverse_iterator.h:35
Definition operations.h:19
Definition operations.h:99
Definition operations.h:27
Definition random_access_iterator.h:12
Definition any_storable.h:9
constexpr auto prev
Definition prev.h:28
constexpr auto operator<=>(MoveIterator< Iter > const &a, MoveIterator< U > const &b)
Definition move_iterator.h:90
constexpr auto operator-(MoveIterator< Iter > const &a, MoveIterator< U > const &b) -> decltype(a.base() - b.base())
Definition move_iterator.h:95
constexpr auto iterator_move
Definition iterator_move.h:56
constexpr auto operator==(MoveIterator< Iter > const &a, MoveIterator< U > const &b) -> bool
Definition move_iterator.h:85
constexpr auto iterator_swap
Definition iterator_swap.h:49
constexpr auto make_reverse_iterator(Iter iter)
Definition reverse_iterator.h:110
constexpr auto copy
Definition copy.h:30
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28