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) 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 - std::ranges::join_with_view 对象
outer - 指向 parent 底层范围的迭代器

示例