- Tumbleweed 2024.07.05-1.3
- Leap-16.0
- Leap-15.6
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 |