Scroll to navigation

std::experimental::ranges::advance(3) C++ Standard Libary std::experimental::ranges::advance(3)

NAME

std::experimental::ranges::advance - std::experimental::ranges::advance

Synopsis


Defined in header <experimental/ranges/iterator>
namespace {
(ranges TS)
constexpr /* unspecified */ advance = /* unspecified (customization point
*/; object)


}
Call signature
template< Iterator I >
constexpr void advance( I& i, ranges::difference_type_t<I> (1)
n );
template< Iterator I, Sentinel<I> S > (2)
constexpr void advance( I& i, S bound );
template< Iterator I, Sentinel<I> S >
constexpr ranges::difference_type_t<I> advance( I& i, (3)
ranges::difference_type_t<I> n, S bound );


Advances the iterator i n times, or until bound is reached, whichever comes first.


1) If I models RandomAccessIterator, equivalent to i += n. Otherwise, increments (or
decrements if n is negative) i n times. The behavior is undefined if n is negative
and I does not model BidirectionalIterator.
2) If Assignable<I&, S> is satisfied, equivalent to i = std::move(bound).
Otherwise, if [i, bound) does not denote a range, the behavior is undefined.
Otherwise, if SizedSentinel<S, I> is satisfied, equivalent to ranges::advance(i,
bound - i).
Otherwise, increments i until i == bound.
3) If SizedSentinel<S, I> is satisfied, equivalent to ranges::advance(i, bound) if
|n| >= |bound - i|, and ranges::advance(i, n) otherwise.
Otherwise, increments (or decrements if n is negative) i either n times or until i
== bound, whichever comes first.
If n > 0, [i, bound) shall denote a range; if n == 0, either [i, bound) or
[bound, i) shall denote a range; if n < 0, [bound, i) shall denote a range, I and S
shall be the same type, and I must model BidirectionalIterator. Otherwise, the
behavior is undefined.

Return value


1,2) (none)
3) The number of increment/decrements not performed due to reaching bound. In other
words, n - M, where M is the distance from the starting position of i to the ending
position and is negative if the ending position is before the starting position.

Example


This section is incomplete
Reason: no example

See also


advance advances an iterator by given distance
(function template)
returns the distance between an iterator and a sentinel, or between the
distance beginning and the end of a range
(function template)
next increment an iterator
(function template)
prev decrement an iterator
(function template)

Category:


* Todo no example

2024.06.10 http://cppreference.com