Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::move_iterator< I > Struct Template Reference

Friends

template<typename I2 >
auto operator!= (move_iterator const &x, move_iterator< I2 > const &y) -> bool requires ` equality_comparable_with< I, I2 >
 
CPP_broken_friend_member friend auto operator+ (iter_difference_t< I > n, move_iterator const &x) -> move_iterator requires ` random_access_iterator< I >
 
template<typename I2 >
auto operator- (move_iterator const &x, move_iterator< I2 > const &y) -> iter_difference_t< I2 > requires ` sized_sentinel_for< I, I2 >
 
template<typename I2 >
auto operator< (move_iterator const &x, move_iterator< I2 > const &y) -> bool requires ` totally_ordered_with< I, I2 >
 
template<typename I2 >
auto operator<= (move_iterator const &x, move_iterator< I2 > const &y) -> bool requires ` totally_ordered_with< I, I2 >
 
template<typename I2 >
auto operator== (move_iterator const &x, move_iterator< I2 > const &y) -> bool requires ` equality_comparable_with< I, I2 >
 
template<typename I2 >
auto operator> (move_iterator const &x, move_iterator< I2 > const &y) -> bool requires ` totally_ordered_with< I, I2 >
 
template<typename I2 >
auto operator>= (move_iterator const &x, move_iterator< I2 > const &y) -> bool requires ` totally_ordered_with< I, I2 >
 

Public Types

using difference_type = iter_difference_t< I >
 
using iterator_category = std::input_iterator_tag
 
using iterator_type = I
 
using reference = iter_rvalue_reference_t< I >
 
using value_type = iter_value_t< I >
 

Public Member Functions

base () const
 
 move_iterator (I i)
 
template<typename O >
requires convertible_to< O, I > move_iterator (move_iterator< O > const &i)
 
auto operator* () const noexcept(noexcept(iter_move(current_))) -> decltype(iter_move(current_))
 
auto operator+ (difference_type n) const -> move_iterator requires ` random_access_iterator< I > `
 
move_iteratoroperator++ ()
 
auto operator++ (int) -> move_iterator requires ` forward_iterator< I > `
 
auto operator++ (int) -> void requires `(!forward_iterator< I >) `
 
auto operator+= (difference_type n) -> move_iterator &requires ` random_access_iterator< I > `
 
auto operator- (difference_type n) const -> move_iterator requires ` random_access_iterator< I > `
 
auto operator-- () -> move_iterator &requires ` forward_iterator< I > `
 
auto operator-- (int) -> move_iterator requires ` bidirectional_iterator< I > `
 
auto operator-= (difference_type n) -> move_iterator &requires ` random_access_iterator< I > `
 
template<typename O >
requires convertible_to< O, I > move_iteratoroperator= (move_iterator< O > const &i)
 
auto operator[] (difference_type n) const -> reference requires ` random_access_iterator< I > `