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 의 사본.