Spec-Zone.ru › C++

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) Эквивалентно auto tmp = *this; ++*this; return tmp;
4) Если внешний итератор является итератором конца, он декрементируется. Затем:
  • Если сохранённый внутренний итератор ссылается на начало внутреннего диапазона, он уничтожается, и создаётся итератор, указывающий на конец диапазона шаблона.
  • Если сохранённый внутренний итератор ссылается на начало диапазона шаблона, он уничтожается, внешний итератор декрементируется, и создаётся итератор, указывающий на конец внутреннего диапазона.
  • Эти шаги могут повторяться (например, если шаблон пуст), пока внутренний диапазон не окажется непустым.
Наконец, внутренний итератор декрементируется.
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API