libstdc++
std::move_iterator< _Iterator > Class Template Reference

Inherits std::__detail::__move_iter_cat< _Iterator >.

Public Types

using difference_type = iter_difference_t< _Iterator >
 
using iterator_concept = decltype(_S_iter_concept())
 
using iterator_type = _Iterator
 
using pointer = _Iterator
 
using reference = iter_rvalue_reference_t< _Iterator >
 
using value_type = iter_value_t< _Iterator >
 

Public Member Functions

constexpr move_iterator (iterator_type __i)
 
template<typename _Iter >
requires __convertible< _Iter > constexpr move_iterator (const move_iterator< _Iter > &__i)
 
constexpr const iterator_type & base () const &noexcept
 
constexpr iterator_type base () &&
 
constexpr reference operator* () const
 
constexpr move_iterator operator+ (difference_type __n) const
 
constexpr move_iteratoroperator++ ()
 
constexpr move_iterator operator++ (int)
 
constexpr void operator++ (int) requires(!forward_iterator< _Iterator >)
 
constexpr move_iteratoroperator+= (difference_type __n)
 
constexpr move_iterator operator- (difference_type __n) const
 
constexpr move_iteratoroperator-- ()
 
constexpr move_iterator operator-- (int)
 
constexpr move_iteratoroperator-= (difference_type __n)
 
constexpr pointer operator-> () const
 
template<typename _Iter >
requires __convertible< _Iter > &&assignable_from< _Iterator &, const _Iter & > constexpr move_iteratoroperator= (const move_iterator< _Iter > &__i)
 
constexpr reference operator[] (difference_type __n) const
 

Friends

template<typename _Iter2 >
class move_iterator
 
constexpr iter_rvalue_reference_t< _Iterator > iter_move (const move_iterator &__i) noexcept(noexcept(ranges::iter_move(__i._M_current)))
 
template<indirectly_swappable< _Iterator > _Iter2>
constexpr void iter_swap (const move_iterator &__x, const move_iterator< _Iter2 > &__y) noexcept(noexcept(ranges::iter_swap(__x._M_current, __y._M_current)))
 
template<sized_sentinel_for< _Iterator > _Sent>
constexpr iter_difference_t< _Iterator > operator- (const move_sentinel< _Sent > &__x, const move_iterator &__y)
 
template<sized_sentinel_for< _Iterator > _Sent>
constexpr iter_difference_t< _Iterator > operator- (const move_iterator &__x, const move_sentinel< _Sent > &__y)
 
template<sentinel_for< _Iterator > _Sent>
constexpr bool operator== (const move_iterator &__x, const move_sentinel< _Sent > &__y)
 

Detailed Description

template<typename _Iterator>
class std::move_iterator< _Iterator >

Class template move_iterator is an iterator adapter with the same behavior as the underlying iterator except that its dereference operator implicitly converts the value returned by the underlying iterator's dereference operator to an rvalue reference. Some generic algorithms can be called with move iterators to replace copying with moving.

Definition at line 1440 of file bits/stl_iterator.h.


The documentation for this class was generated from the following file: