std::experimental::ranges:: advance
|
Определено в заголовке
<experimental/ranges/iterator>
|
||
|
namespace
{
constexpr
/* unspecified */
advance
=
/* unspecified */
;
|
(ranges TS)
(объект точки кастомизации) |
|
|
Сигнатура вызова
|
||
|
template
<
Iterator I
>
constexpr void advance ( I & i, ranges :: difference_type_t < I > n ) ; |
(1) | |
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr void advance ( I & i, S bound ) ; |
(2) | |
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr ranges :: difference_type_t < I > advance ( I & i, ranges :: difference_type_t < I > n, S bound ) ; |
(3) | |
Перемещает итератор i n раз, или до достижения bound в зависимости от того, что наступит раньше.
I
моделирует
RandomAccessIterator
, эквивалентно
i
+
=
n
. В противном случае инкрементирует (или декрементирует, если
n
отрицательно)
i
n
раз. Поведение не определено, если
n
отрицательно и
I
не моделирует
BidirectionalIterator
.
[
i
,
bound
)
не обозначает диапазон, поведение не определено.
[
i
,
bound
)
обозначает диапазон; если
n
==
0
, либо
[
i
,
bound
)
, либо
[
bound
,
i
)
обозначает диапазон; если
n
<
0
,
[
bound
,
i
)
обозначает диапазон,
I
и
S
должны быть одного типа, и
I
должен моделировать
BidirectionalIterator
. В противном случае поведение не определено.
Содержание |
Объекты точек кастомизации
Название
ranges::advance
обозначает
объект точки кастомизации
, который является
функциональным объектом
типа
литерального
Semiregular
класса (обозначенного, для целей демонстрации, как
AdvanceT
). Все экземпляры
AdvanceT
равны. Таким образом,
ranges::advance
можно свободно копировать, и его копии могут использоваться взаимозаменяемо.
Для заданного набора типов
Args...
, если
std::
declval
<
Args
>
(
)
...
удовлетворяют требованиям к аргументам для
ranges::advance
выше,
AdvanceT
будет удовлетворять
ranges
::
Invocable
<
const
AdvanceT, Args...
>
. В противном случае ни один оператор вызова функции
AdvanceT
не участвует в разрешении перегрузки.
В каждой единице трансляции, где определен
ranges::advance
, он ссылается на один и тот же экземпляр объекта точки настройки. (Это означает, что его можно свободно использовать в таких конструкциях, как встроенные функции и шаблоны функций, не нарушая
правило одного определения
.)
Возвращаемое значение
M
- это расстояние от начальной позиции
i
до конечной позиции, и оно отрицательно, если конечная позиция находится перед начальной позицией.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
перемещает итератор на заданное расстояние
(шаблон функции) |
|
|
возвращает расстояние между итератором и стражем, или между началом и концом диапазона
(шаблон функции) |
|
|
увеличивает итератор
(шаблон функции) |
|
|
уменьшает итератор
(шаблон функции) |