16template<concepts::InputIterator Iter>
20 meta::Conditional<concepts::RandomAccessIterator<Iter>, RandomAccessIteratorTag,
21 meta::Conditional<concepts::BidirectionalIterator<Iter>, BidirectionalIteratorTag,
22 meta::Conditional<concepts::ForwardIterator<Iter>, ForwardIteratorTag,
24 meta::IteratorValue<Iter>, meta::IteratorSSizeType<Iter>> {
35 template<
typename Other>
39 template<
typename Other>
43 this->m_iterator = other.m_iterator;
47 constexpr auto base() const& -> Iter const& {
return m_iterator; }
48 constexpr auto base() && -> Iter {
return util::move(m_iterator); }
67 template<concepts::InputIterator Other>
76 template<concepts::IndirectlySwappable<Iter> Other>
84template<
typename Iter, concepts::EqualityComparableWith<Iter> U>
86 return a.base() == b.base();
89template<
typename Iter, concepts::ThreeWayComparableWith<Iter> U>
94template<
typename Iter,
typename U>
96 return a.base() - b.base();
99template<concepts::InputIterator Iter>
Definition move_iterator.h:24
constexpr void back_one()
Definition move_iterator.h:54
constexpr MoveIterator(MoveIterator< Other > const &other)
Definition move_iterator.h:37
constexpr MoveIterator(Iter iterator)
Definition move_iterator.h:33
constexpr friend void tag_invoke(types::Tag< iterator_swap >, MoveIterator const &a, MoveIterator< Other > const &b)
Definition move_iterator.h:77
constexpr auto operator*() const -> meta::IteratorRValue< Iter >
Definition move_iterator.h:50
constexpr auto operator=(MoveIterator< Other > const &other) -> MoveIterator &
Definition move_iterator.h:42
constexpr auto base() const &-> Iter const &
Definition move_iterator.h:47
constexpr friend auto tag_invoke(types::Tag< iterator_move >, MoveIterator const &self) -> decltype(auto) requires(
Definition move_iterator.h:70
constexpr void advance_one()
Definition move_iterator.h:52
constexpr void advance_n(SSizeType n)
Definition move_iterator.h:60
friend class MoveIterator
Definition move_iterator.h:68
constexpr MoveIterator()=default
constexpr auto base() &&-> Iter
Definition move_iterator.h:48
Definition operations.h:19
Definition bidirectional_iterator.h:8
Definition operations.h:99
Definition operations.h:24
Definition random_access_iterator.h:12
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 move
Definition move.h:38
constexpr auto make_move_iterator(Iter iterator)
Definition move_iterator.h:100
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
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28