constexpr move_iterator();
Effects: Constructs a
move_iterator, value-initializing
current. Iterator operations applied to the resulting
iterator have defined behavior if and only if the corresponding operations are defined
on a value-initialized iterator of type
Iterator.constexpr explicit move_iterator(Iterator i);
Effects: Constructs a
move_iterator, initializing
current with
i. template <class U> constexpr move_iterator(const move_iterator<U>& u);
Effects: Constructs a
move_iterator, initializing
current with
u.base(). Requires: U shall be convertible to
Iterator. template <class U> constexpr move_iterator& operator=(const move_iterator<U>& u);
Effects: Assigns
u.base() to
current. Requires: U shall be convertible to
Iterator. constexpr Iterator base() const;
constexpr reference operator*() const;
Returns: static_cast<reference>(*current). constexpr pointer operator->() const;
constexpr move_iterator& operator++();
Effects: As if by
++current. constexpr move_iterator operator++(int);
Effects:
As if by:
move_iterator tmp = *this;
++current;
return tmp;
constexpr move_iterator& operator--();
Effects: As if by
--current. constexpr move_iterator operator--(int);
Effects:
As if by:
move_iterator tmp = *this;
--current;
return tmp;
constexpr move_iterator operator+(difference_type n) const;
Returns: move_iterator(current + n). constexpr move_iterator& operator+=(difference_type n);
Effects: As if by: current += n;
constexpr move_iterator operator-(difference_type n) const;
Returns: move_iterator(current - n). constexpr move_iterator& operator-=(difference_type n);
Effects: As if by: current -= n;
constexpr unspecified operator[](difference_type n) const;
Returns: std::move(current[n]). template <class Iterator1, class Iterator2>
constexpr bool operator==(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);
Returns: x.base() == y.base(). template <class Iterator1, class Iterator2>
constexpr bool operator!=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);
template <class Iterator1, class Iterator2>
constexpr bool operator<(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);
Returns: x.base() < y.base(). template <class Iterator1, class Iterator2>
constexpr bool operator<=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);
template <class Iterator1, class Iterator2>
constexpr bool operator>(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);
template <class Iterator1, class Iterator2>
constexpr bool operator>=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y);
template <class Iterator1, class Iterator2>
constexpr auto operator-(
const move_iterator<Iterator1>& x,
const move_iterator<Iterator2>& y) -> decltype(x.base() - y.base());
Returns: x.base() - y.base(). template <class Iterator>
constexpr move_iterator<Iterator> operator+(
typename move_iterator<Iterator>::difference_type n, const move_iterator<Iterator>& x);
template <class Iterator>
constexpr move_iterator<Iterator> make_move_iterator(Iterator i);
Returns: move_iterator<Iterator>(i).