5 #ifndef VCCC_ITERATOR_MOVE_ITERATOR_HPP_
6 #define VCCC_ITERATOR_MOVE_ITERATOR_HPP_
33 template<
typename Iterator1,
typename Iterator2>
35 :
negation<sized_sentinel_for<Iterator1, Iterator2>> {};
37 #if __cplusplus < 202302L
42 struct move_iterator_category {};
44 template<
typename Iter>
45 struct move_iterator_category<Iter, true> {
46 using iterator_category = std::conditional_t<
48 typename cxx20_iterator_traits<Iter>::iterator_category
54 template<
typename Iter>
56 : detail::move_iterator_category<Iter>
75 template<
typename Iter>
76 struct is_primary_iterator_traits<
std::move_iterator<Iter>> : std::true_type {};
87 #if __cplusplus < 202002L
91 template<
typename Iter>
99 constexpr
void iter_swap(
const move_iterator<Iter>& x,
const move_iterator<Iter2>& y)
std::forward_iterator_tag forward_iterator_tag
Definition: iterator_tag.hpp:17
std::random_access_iterator_tag random_access_iterator_tag
Definition: iterator_tag.hpp:19
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::input_iterator_tag input_iterator_tag
Definition: iterator_tag.hpp:15
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 move_iterator< Iter > &i) noexcept(noexcept(vccc::ranges::iter_move(i.base())))
Definition: move_iterator.hpp:92
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
specifies that a forward_iterator is a bidirectional iterator, supporting movement backwards
Definition: bidirectional_iterator.hpp:58
std::conditional_t< random_access_iterator< Iter >::value, random_access_iterator_tag, std::conditional_t< bidirectional_iterator< Iter >::value, bidirectional_iterator_tag, std::conditional_t< forward_iterator< Iter >::value, forward_iterator_tag, input_iterator_tag > >> iterator_concept
Definition: move_iterator.hpp:66
iter_value_t< Iter > value_type
Definition: move_iterator.hpp:67
Iter pointer
Definition: move_iterator.hpp:69
iter_difference_t< Iter > difference_type
Definition: move_iterator.hpp:68
iter_rvalue_reference_t< Iter > reference
Definition: move_iterator.hpp:70
Definition: cxx20_iterator_traits.hpp:188
Definition: sized_sentinel_for.hpp:22
specifies that an input_iterator is a forward iterator, supporting equality comparison and multi-pass
Definition: forward_iterator.hpp:53
Definition: negation.hpp:23
specifies that a bidirectional_iterator is a random-access iterator, supporting advancement in consta...
Definition: random_access_iterator.hpp:120