Namespaces
Variants

std::ranges::join_with_view<V,Pattern>:: iterator <Const>:: iterator

From cppreference.net
Ranges library
Range adaptors
/*iterator*/ ( ) = default ;
(1) (C++23부터)
constexpr /*iterator*/ ( /*iterator*/ < ! Const > i )

requires Const &&
std:: convertible_to < ranges:: iterator_t < V > , /*OuterIter*/ > &&
std:: convertible_to < ranges:: iterator_t < /*InnerRng*/ > ,
/*InnerIter*/ > &&

std:: convertible_to < ranges:: iterator_t < Pattern > , /*PatternIter*/ > ;
(2) (C++23부터)
constexpr /*iterator*/ ( /*Parent*/ & parent, /*OuterIter*/ outer )
requires std:: forward_range < /*Base*/ > ;
(3) (C++23부터)
( 설명 전용* )
constexpr explicit /*iterator*/ ( /*Parent*/ parent )
requires ( ! std:: forward_range < /*Base*/ > ) ;
(4) (C++23부터)
( 설명 전용* )

반복자를 구성합니다. 오버로드 (3,4) begin() end() 에 의해 ranges::join_with_view 의 호출로 불립니다.

오버로드 데이터 멤버
parent_ outer_it_ inner_it_
(1) nullptr 로 초기화됨 값 초기화
( Base forward_range 를 모델링하는 경우에만)
기본 초기화
(2) i. parent_ 로 초기화됨 std :: move ( i. outer_it_ 로 초기화됨
( Base forward_range 를 모델링하는 경우에만)
(3)
std:: addressof ( parent ) 로 초기화됨
std :: move ( outer ) 로 초기화됨
(4) 해당 없음
2) 데이터 멤버를 초기화한 후, 다음 코드와 동등합니다:

if ( i. inner_it_  . index ( ) == 0 )
inner_it_  . template emplace < 0 > ( std :: get < 0 > ( std :: move ( i. inner_it_  ) ) ) ;
else
inner_it_  . template emplace < 1 > ( std :: get < 1 > ( std :: move ( i. inner_it_  ) ) ) ;

.
3,4) 데이터 멤버들을 초기화한 후, 내부 반복자(inner iterator) operator++() 에 의해 증가된 것처럼 외부 반복자(outer iterator) 를 조정합니다.

매개변수

i - 변경 가능한 반복자
parent - a std::ranges::join_with_view object
outer - parent 의 기반 범위에 대한 반복자

예제