Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
/*iterator*/ ( ) = default ;
(1) (depuis 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) (depuis C++23)
constexpr /*iterator*/ ( /*Parent*/ & parent, /*OuterIter*/ outer )
requires std:: forward_range < /*Base*/ > ;
(3) (depuis C++23)
( exposition uniquement* )
constexpr explicit /*iterator*/ ( /*Parent*/ parent )
requires ( ! std:: forward_range < /*Base*/ > ) ;
(4) (depuis C++23)
( exposition uniquement* )

Construit un itérateur. Les surcharges (3,4) sont appelées par begin() et end() de ranges::join_with_view .

Surcharge Membres de données
parent_ outer_it_ inner_it_
(1) initialisé avec nullptr initialisé par valeur
(seulement si Base modélise forward_range )
initialisé par défaut
(2) initialisé avec i. parent_ initialisé avec std :: move ( i. outer_it_
(seulement si Base modélise forward_range )
(3) initialisé avec
std:: addressof ( parent )
initialisé avec std :: move ( outer )
(4) N/A
2) Après l'initialisation des membres de données, équivalent à

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) Après l'initialisation des membres de données, ajustez l' itérateur externe comme si l' itérateur interne avait été incrémenté par operator++() .

Paramètres

i - un itérateur mutable
parent - un objet std::ranges::join_with_view
outer - un itérateur dans la plage sous-jacente de parent

Exemple