std::move_iterator< _Iterator > Class Template Reference
Iterators

`#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_iterator & | operator++ ()
constexpr move_iterator | operator++ (int)
constexpr void | operator++ (int)
constexpr move_iterator & | operator+= (difference_type __n)
constexpr move_iterator | operator- (difference_type __n) const
constexpr move_iterator & | operator-- ()
constexpr move_iterator | operator-- (int)
constexpr move_iterator & | operator-= (difference_type __n)
constexpr pointer | operator-> () const
template<typename _Iter > requires __convertible<_Iter> && assignable_from<_Iterator&, const _Iter&>
constexpr move_iterator & | operator= (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 1449 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 1497 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 1493 of file bits/stl_iterator.h.

## iterator_type

template<typename _Iterator >

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

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

## pointer

template<typename _Iterator >

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

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

## reference

template<typename _Iterator >

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

Definition at line 1499 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 1496 of file bits/stl_iterator.h.

## Constructor & Destructor Documentation

## move_iterator() [1/3]

template<typename _Iterator >

constexpr std::move_iterator< _Iterator >::move_iterator | ( |  | ) |

inline constexpr

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

## move_iterator() [2/3]

template<typename _Iterator >

constexpr std::move_iterator< _Iterator >::move_iterator | ( | iterator_type | __i | ) |

inline explicit constexpr

Definition at line 1519 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 | ) |

inline constexpr

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

## Member Function Documentation

## base() [1/2]

template<typename _Iterator >

constexpr iterator_type std::move_iterator< _Iterator >::base | ( |  | ) | &&

inline constexpr

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

## base() [2/2]

template<typename _Iterator >

constexpr const iterator_type & std::move_iterator< _Iterator >::base | ( |  | ) | const &

inline constexpr noexcept

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

## operator*()

template<typename _Iterator >

constexpr reference std::move_iterator< _Iterator >::operator* | ( |  | ) | const

inline constexpr

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

## operator+()

template<typename _Iterator >

constexpr move_iterator std::move_iterator< _Iterator >::operator+ | ( | difference_type | __n | ) | const

inline constexpr

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

## operator++() [1/3]

template<typename _Iterator >

constexpr move_iterator & std::move_iterator< _Iterator >::operator++ | ( |  | ) |

inline constexpr

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

## operator++() [2/3]

template<typename _Iterator >

constexpr move_iterator std::move_iterator< _Iterator >::operator++ | ( | int |  | ) |

inline constexpr

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

## operator++() [3/3]

template<typename _Iterator >

constexpr void std::move_iterator< _Iterator >::operator++ | ( | int |  | ) |

inline constexpr

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

## operator+=()

template<typename _Iterator >

constexpr move_iterator & std::move_iterator< _Iterator >::operator+= | ( | difference_type | __n | ) |

inline constexpr

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

## operator-()

template<typename _Iterator >

constexpr move_iterator std::move_iterator< _Iterator >::operator- | ( | difference_type | __n | ) | const

inline constexpr

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

## operator--() [1/2]

template<typename _Iterator >

constexpr move_iterator & std::move_iterator< _Iterator >::operator-- | ( |  | ) |

inline constexpr

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

## operator--() [2/2]

template<typename _Iterator >

constexpr move_iterator std::move_iterator< _Iterator >::operator-- | ( | int |  | ) |

inline constexpr

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

## operator-=()

template<typename _Iterator >

constexpr move_iterator & std::move_iterator< _Iterator >::operator-= | ( | difference_type | __n | ) |

inline constexpr

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

## operator->()

template<typename _Iterator >

constexpr pointer std::move_iterator< _Iterator >::operator-> | ( |  | ) | const

inline constexpr

Definition at line 1570 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 | ) |

inline constexpr

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

## operator[]()

template<typename _Iterator >

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

inline constexpr

Definition at line 1635 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 1462 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 1663 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 1669 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 1658 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 1652 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 1646 of file bits/stl_iterator.h.

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

- bits/stl_iterator.h