Files
2025-10-25 03:02:53 +03:00

2.9 KiB
Raw Permalink Blame History

[reverse.iter.nonmember]

24 Iterators library [iterators]

24.5 Iterator adaptors [predef.iterators]

24.5.1 Reverse iterators [reverse.iterators]

24.5.1.9 Non-member functions [reverse.iter.nonmember]

🔗

template<class Iterator1, class Iterator2> constexpr auto operator-( const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y) -> decltype(y.base() - x.base());

1

#

Returns: y.base() - x.base().

🔗

template<class Iterator> constexpr reverse_iterator<Iterator> operator+( iter_difference_t<Iterator> n, const reverse_iterator<Iterator>& x);

2

#

Returns: reverse_iterator(x.base() - n).

🔗

friend constexpr iter_rvalue_reference_t<Iterator> iter_move(const reverse_iterator& i) noexcept(see below);

3

#

Effects: Equivalent to:auto tmp = i.base();return ranges::iter_move(--tmp);

4

#

Remarks: The exception specification is equivalent to:is_nothrow_copy_constructible_v &&noexcept(ranges::iter_move(--declval<Iterator&>()))

🔗

template<[indirectly_swappable](alg.req.ind.swap#concept:indirectly_swappable "24.3.7.4Concept indirectly_­swappable[alg.req.ind.swap]")<Iterator> Iterator2> friend constexpr void iter_swap(const reverse_iterator& x, const reverse_iterator<Iterator2>& y) noexcept(see below);

5

#

Effects: Equivalent to:auto xtmp = x.base();auto ytmp = y.base(); ranges::iter_swap(--xtmp, --ytmp);

6

#

Remarks: The exception specification is equivalent to:is_nothrow_copy_constructible_v && is_nothrow_copy_constructible_v &&noexcept(ranges::iter_swap(--declval<Iterator&>(), --declval<Iterator2&>()))

🔗

template<class Iterator> constexpr reverse_iterator<Iterator> make_reverse_iterator(Iterator i);

7

#

Returns: reverse_iterator(i).