Namespaces
Variants

operator+,-(ranges::transform_view::iterator)

С ru.cppreference.net
 
 
Библиотека диапазонов
Адаптеры диапазонов
 
 
friend constexpr /*iterator*/ operator+( /*iterator*/ i, difference_type n )
    requires ranges::random_access_range<Base>;
(1) (начиная с C++20)
friend constexpr /*iterator*/ operator+( difference_type n, /*iterator*/ i )
    requires ranges::random_access_range<Base>;
(2) (начиная с C++20)
friend constexpr /*iterator*/ operator-( /*iterator*/ i, difference_type n )
    requires ranges::random_access_range<Base>;
(3) (начиная с C++20)
friend constexpr difference_type operator-( const /*iterator*/& x,
                                            const /*iterator*/& y )
    requires std::sized_sentinel_for<ranges::iterator_t<Base>,
                                     ranges::iterator_t<Base>>;
(4) (начиная с C++20)
1,2) Возвращает итератор i, увеличенный на n.
3) Возвращает итератор i, уменьшенный на n.
4) Возвращает расстояние между x и y.

Эти функции не видны при обычном неквалифицированном или квалифицированном поиске и могут быть найдены только с помощью поиска, зависящего от аргументов, если transform_view::iterator<Const> является связанным классом аргументов.

Параметры

i, x, y - итераторы.
n - позиция относительно текущего местоположения.

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

Пусть parent_ обозначает указатель на родительский transform_view , current_ обозначает базовый итератор.

1,2) /*iterator*/ { * i. parent_ , i. current_ + n }
3) /*iterator*/ { * i. parent_ , i. current_ - n }
4) x. current_ - y. current_

Пример

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 3483 C++20 transform_view::iterator 's difference is overconstrained requirement is relaxed