Namespaces
Variants

std::experimental::ranges:: next

From cppreference.net
Определено в заголовке <experimental/ranges/iterator>
namespace {

constexpr /* unspecified */ next = /* unspecified */ ;

}
(ranges TS)
(объект точки кастомизации)
Сигнатура вызова
template < Iterator I >
constexpr I next ( I i ) ;
(1)
template < Iterator I >
constexpr I next ( I i, ranges :: difference_type_t < I > n ) ;
(2)
template < Iterator I, Sentinel < I > S >
constexpr I next ( I i, S bound ) ;
(3)
template < Iterator I, Sentinel < I > S >
constexpr I next ( I i, ranges :: difference_type_t < I > n, S bound ) ;
(4)

Перемещает итератор i n раз, или до достижения bound в зависимости от того, что наступит раньше, и возвращает перемещённый итератор.

1) Эквивалентно ++ i ; return i ; .
2) Эквивалентно ranges:: advance ( i, n ) ; return i ; .
3) Эквивалентно ranges:: advance ( i, bound ) ; return i ; .
4) Эквивалентно ranges:: advance ( i, n, bound ) ; return i ; .

Содержание

Объекты точек кастомизации

Имя ranges::next обозначает объект точки кастомизации , который является функциональным объектом типа литерального Semiregular класса (обозначаемого, для целей демонстрации, как NextT ). Все экземпляры NextT равны. Таким образом, ranges::next может свободно копироваться, и его копии могут использоваться взаимозаменяемо.

Для заданного набора типов Args... , если std:: declval < Args > ( ) ... удовлетворяют требованиям к аргументам для ranges::next выше, NextT будет удовлетворять ranges :: Invocable < const NextT, Args... > . В противном случае ни один оператор вызова функции NextT не участвует в разрешении перегрузки.

В каждой единице трансляции, где определен ranges::next , он ссылается на тот же экземпляр объекта точки настройки. (Это означает, что его можно свободно использовать в таких конструкциях, как встроенные функции и шаблоны функций без нарушения правила одного определения .)

Возвращаемое значение

Продвинутый итератор.

Примечания

Хотя опускание n для перегрузки (2) ведёт себя так, как если бы n было равно 1, опускание n для перегрузки (4) фактически ведёт себя так, как если бы n было бесконечностью (всегда продвигается до bound ).

Пример

Смотрите также

(C++11)
увеличивает итератор
(шаблон функции)
перемещает итератор на заданное расстояние
(шаблон функции)
уменьшает итератор
(шаблон функции)
возвращает расстояние между итератором и стражем, или между началом и концом диапазона
(шаблон функции)