Namespaces
Variants

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

cppreference.net에서 가져옴
 
 
범위 라이브러리
범위 어댑터
 
 
/*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)는 ranges::join_with_view의 begin() 및 end()에서 호출됩니다.

 오버로드  데이터 멤버
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) 데이터 멤버 초기화 후, 외부 반복자를 내부 반복자가 operator++()만큼 증가된 것처럼 조정합니다.

매개변수

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

예제