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 |