template <class I1, class I2>
requires SizedSentinel<I1, I2>
constexpr difference_type_t<I2> operator-(
const move_iterator<I1>& x,
const move_iterator<I2>& y);
Effects: Equivalent to: return x.current - y.current;
template <RandomAccessIterator I>
constexpr move_iterator<I> operator+(
difference_type_t<I> n,
const move_iterator<I>& x);
Effects: Equivalent to: return x + n;
friend constexpr rvalue_reference_t<I> iter_move(const move_iterator& i)
noexcept(see below);
Effects: Equivalent to: return ranges::iter_move(i.current);
Remarks: The expression in noexcept is equivalent to:
noexcept(ranges::iter_move(i.current))
template <IndirectlySwappable<I> I2>
friend constexpr void iter_swap(const move_iterator& x, const move_iterator<I2>& y)
noexcept(see below);
Effects: Equivalent to: ranges::iter_swap(x.current, y.current).
Remarks: The expression in noexcept is equivalent to:
noexcept(ranges::iter_swap(x.current, y.current))
template <InputIterator I>
constexpr move_iterator<I> make_move_iterator(I i);
Returns: move_iterator<I>(i).