std::ranges::join_view<V>::iterator<Const>::operator++,--
From cppreference.com
| constexpr /*iterator*/& operator++(); |
(1) | (C++20以降) |
| constexpr void operator++( int ); |
(2) | (C++20以降) |
| constexpr /*iterator*/ operator++( int ) requires /*ref-is-glvalue*/ && ranges::forward_range<Base> && |
(3) | (C++20以降) |
| constexpr iterator& operator--() requires /*ref-is-glvalue*/ && ranges::bidirectional_range<Base> && |
(4) | (C++20以降) |
| constexpr /*iterator*/ operator--( int ) requires /*ref-is-glvalue*/ && ranges::bidirectional_range<Base> && |
(5) | (C++20以降) |
基底イテレータを進める、または後退させる。
inner_ と outer_ を基底イテレータとし、 parent_ を親の ranges::join_view へのポインタとする。定数 /*ref-is-glvalue*/ は std::is_reference_v<ranges::range_reference_t<Base>>。
1) /*inner-range*/ は以下のように定義される:
- *outer_ 、 /*ref-is-glvalue*/ == true の場合。
- *parent_->inner_ 、それ以外の場合。
以下と等価です。
auto&& inner_rng = /*inner-range*/; if (++inner_ == ranges::end(inner_rng)) { ++outer_; satisfy(); } return *this;
2) 相当: ++*this。
3) 以下と同等です
auto tmp = *this; ++*this; return tmp;
4) 同値:
if (outer_ == ranges::end(parent_->base_)) inner_ = ranges::end(*--outer_); while (inner_ == ranges::begin(*outer_)) inner_ = ranges::end(*--outer_); --inner_; return *this;
5) 次と同等です。
auto tmp = *this; --*this; return tmp;
[編集] パラメータ
(なし)
[編集] 戻り値
1,4) *this
2) (なし)
3,5) 変更前のものである *this のコピー。