std::ranges::join_with_view<V,Pattern>::iterator<Const>::operator++,--
constexpr /*iterator*/& operator++(); | (1) | (since C++23) |
constexpr void operator++( int ); | (2) | (since C++23) |
constexpr /*iterator*/ operator++( int )
requires std::is_reference_v<InnerBase> &&
ranges::forward_range<Base> &&
ranges::forward_range<InnerBase>;
| (3) | (since C++23) |
constexpr /*iterator*/& operator--()
requires std::is_reference_v<InnerBase> &&
ranges::bidirectional_range<Base> &&
ranges::bidirectional_range<InnerBase> &&
ranges::common_range<InnerBase> &&
ranges::bidirectional_range<PatternBase> &&
ranges::common_range<PatternBase>;
| (4) | (since C++23) |
constexpr /*iterator*/ operator--( int )
requires std::is_reference_v<InnerBase> &&
ranges::bidirectional_range<Base> &&
ranges::bidirectional_range<InnerBase> &&
ranges::common_range<InnerBase> &&
ranges::bidirectional_range<PatternBase> &&
ranges::common_range<PatternBase>;
| (5) | (since C++23) |
Инкрементирует или декрементирует итератор.
1) Инкрементирует сохранённый внутренний итератор. (Внутренний итератор может указывать наInnerBase или PatternBase. - Если инкрементированный внутренний итератор достигает конца диапазона шаблона, он уничтожается, и создаётся итератор, указывающий на начало следующего внутреннего диапазона.
- Если инкрементированный внутренний итератор достигает конца внутреннего диапазона, внешний итератор инкрементируется, и если внешний итератор не является итератором конца, внутренний итератор уничтожается, а создаётся итератор, указывающий на начало диапазона шаблона.
- Эти шаги могут повторяться (например, если шаблон пуст), пока внутренний диапазон не окажется непустым или внешний итератор не достигнет конца.
2) Эквивалентно
++*this;
3) Эквивалентно
4) Если внешний итератор является итератором конца, он декрементируется. Затем: auto tmp = *this; ++*this; return tmp;
- Если сохранённый внутренний итератор ссылается на начало внутреннего диапазона, он уничтожается, и создаётся итератор, указывающий на конец диапазона шаблона.
- Если сохранённый внутренний итератор ссылается на начало диапазона шаблона, он уничтожается, внешний итератор декрементируется, и создаётся итератор, указывающий на конец внутреннего диапазона.
- Эти шаги могут повторяться (например, если шаблон пуст), пока внутренний диапазон не окажется непустым.
5) Эквивалентно
auto tmp = *this; --*this; return tmp;
Если InnerBase не является ссылкой, внутренний диапазон хранится в родительском join_with_view для итерации. Внутренний диапазон не обязательно должен быть перемещаемым.
Если InnerBase является ссылкой, и внешний итератор достигает конца, внутренний итератор указывает на начало диапазона шаблона.
Параметры
(нет)
Возвращаемое значение
1,4)
*this
3,5) Копия
*this, созданная до изменения.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/join_with_view/iterator/operator_arith