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

#include <stl_iterator.h>

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

template<typename _Iter >
requires __convertible<_Iter>
constexpr move_iterator (const move_iterator< _Iter > &__i)
 
constexpr move_iterator (iterator_type __i)
 
constexpr iterator_type base () &&
 
constexpr const iterator_type & base () const &noexcept
 
constexpr reference operator* () const
 
constexpr move_iterator operator+ (difference_type __n) const
 
constexpr move_iteratoroperator++ ()
 
constexpr move_iterator operator++ (int)
 
constexpr void operator++ (int)
 
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

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_iterator &__x, const move_sentinel< _Sent > &__y)
 
template<sized_sentinel_for< _Iterator > _Sent>
constexpr iter_difference_t< _Iterator > operator- (const move_sentinel< _Sent > &__x, const move_iterator &__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.

Member Typedef Documentation

◆ difference_type

template<typename _Iterator >
using std::move_iterator< _Iterator >::difference_type = iter_difference_t<_Iterator>

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

◆ iterator_concept

template<typename _Iterator >
using std::move_iterator< _Iterator >::iterator_concept = decltype(_S_iter_concept())

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

◆ iterator_type

template<typename _Iterator >
using std::move_iterator< _Iterator >::iterator_type = _Iterator

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

◆ pointer

template<typename _Iterator >
using std::move_iterator< _Iterator >::pointer = _Iterator

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

◆ reference

template<typename _Iterator >
using std::move_iterator< _Iterator >::reference = iter_rvalue_reference_t<_Iterator>

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

◆ value_type

template<typename _Iterator >
using std::move_iterator< _Iterator >::value_type = iter_value_t<_Iterator>

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

Constructor & Destructor Documentation

◆ move_iterator() [1/3]

template<typename _Iterator >
constexpr std::move_iterator< _Iterator >::move_iterator ( )
inlineconstexpr

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

◆ move_iterator() [2/3]

template<typename _Iterator >
constexpr std::move_iterator< _Iterator >::move_iterator ( iterator_type  __i)
inlineexplicitconstexpr

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

◆ move_iterator() [3/3]

template<typename _Iterator >
template<typename _Iter >
requires __convertible<_Iter>
constexpr std::move_iterator< _Iterator >::move_iterator ( const move_iterator< _Iter > &  __i)
inlineconstexpr

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

Member Function Documentation

◆ base() [1/2]

template<typename _Iterator >
constexpr iterator_type std::move_iterator< _Iterator >::base ( ) &&
inlineconstexpr

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

◆ base() [2/2]

template<typename _Iterator >
constexpr const iterator_type & std::move_iterator< _Iterator >::base ( ) const &
inlineconstexprnoexcept

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

◆ operator*()

template<typename _Iterator >
constexpr reference std::move_iterator< _Iterator >::operator* ( ) const
inlineconstexpr

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

◆ operator+()

template<typename _Iterator >
constexpr move_iterator std::move_iterator< _Iterator >::operator+ ( difference_type  __n) const
inlineconstexpr

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

◆ operator++() [1/3]

template<typename _Iterator >
constexpr move_iterator & std::move_iterator< _Iterator >::operator++ ( )
inlineconstexpr

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

◆ operator++() [2/3]

template<typename _Iterator >
constexpr move_iterator std::move_iterator< _Iterator >::operator++ ( int  )
inlineconstexpr

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

◆ operator++() [3/3]

template<typename _Iterator >
constexpr void std::move_iterator< _Iterator >::operator++ ( int  )
inlineconstexpr

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

◆ operator+=()

template<typename _Iterator >
constexpr move_iterator & std::move_iterator< _Iterator >::operator+= ( difference_type  __n)
inlineconstexpr

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

◆ operator-()

template<typename _Iterator >
constexpr move_iterator std::move_iterator< _Iterator >::operator- ( difference_type  __n) const
inlineconstexpr

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

◆ operator--() [1/2]

template<typename _Iterator >
constexpr move_iterator & std::move_iterator< _Iterator >::operator-- ( )
inlineconstexpr

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

◆ operator--() [2/2]

template<typename _Iterator >
constexpr move_iterator std::move_iterator< _Iterator >::operator-- ( int  )
inlineconstexpr

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

◆ operator-=()

template<typename _Iterator >
constexpr move_iterator & std::move_iterator< _Iterator >::operator-= ( difference_type  __n)
inlineconstexpr

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

◆ operator->()

template<typename _Iterator >
constexpr pointer std::move_iterator< _Iterator >::operator-> ( ) const
inlineconstexpr

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

◆ operator=()

template<typename _Iterator >
template<typename _Iter >
requires __convertible<_Iter> && assignable_from<_Iterator&, const _Iter&>
constexpr move_iterator & std::move_iterator< _Iterator >::operator= ( const move_iterator< _Iter > &  __i)
inlineconstexpr

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

◆ operator[]()

template<typename _Iterator >
constexpr reference std::move_iterator< _Iterator >::operator[] ( difference_type  __n) const
inlineconstexpr

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

Friends And Related Symbol Documentation

◆ move_iterator

template<typename _Iterator >
template<typename _Iter2 >
friend class move_iterator
friend

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

◆ iter_move

template<typename _Iterator >
constexpr iter_rvalue_reference_t< _Iterator > iter_move ( const move_iterator< _Iterator > &  __i)
friend

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

◆ iter_swap

template<typename _Iterator >
template<indirectly_swappable< _Iterator > _Iter2>
constexpr void iter_swap ( const move_iterator< _Iterator > &  __x,
const move_iterator< _Iter2 > &  __y 
)
friend

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

◆ operator- [1/2]

template<typename _Iterator >
template<sized_sentinel_for< _Iterator > _Sent>
constexpr iter_difference_t< _Iterator > operator- ( const move_iterator< _Iterator > &  __x,
const move_sentinel< _Sent > &  __y 
)
friend

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

◆ operator- [2/2]

template<typename _Iterator >
template<sized_sentinel_for< _Iterator > _Sent>
constexpr iter_difference_t< _Iterator > operator- ( const move_sentinel< _Sent > &  __x,
const move_iterator< _Iterator > &  __y 
)
friend

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

◆ operator==

template<typename _Iterator >
template<sentinel_for< _Iterator > _Sent>
constexpr bool operator== ( const move_iterator< _Iterator > &  __x,
const move_sentinel< _Sent > &  __y 
)
friend

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


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