Namespaces
Variants

std::ranges::join_view<V>:: iterator <Const>:: operator++,--

From cppreference.net
Ranges library
Range adaptors
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 > &&

ranges:: forward_range < ranges:: range_reference_t < Base >> ;
(3) (自 C++20 起)
constexpr iterator & operator -- ( )

requires /*ref-is-glvalue*/ && ranges:: bidirectional_range < Base > &&
ranges:: bidirectional_range < ranges:: range_reference_t < Base >> &&

ranges:: common_range < ranges:: range_reference_t < Base >> ;
(4) (自 C++20 起)
constexpr /*iterator*/ operator -- ( int )

requires /*ref-is-glvalue*/ && ranges:: bidirectional_range < Base > &&
ranges:: bidirectional_range < ranges:: range_reference_t < Base >> &&

ranges:: common_range < ranges:: range_reference_t < 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 副本。