Namespaces
Variants

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

Von de.cppreference.net
 
 
Ranges-Bibliothek
Range-Adaptoren
 
 
/*iterator*/() = default;
(1) (seit 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) (seit C++23)
constexpr /*iterator*/( /*Parent*/& parent, /*OuterIter*/ outer )
    requires std::forward_range</*Base*/>;
(3) (seit C++23)
(nur zur Darstellung*)
constexpr explicit /*iterator*/( /*Parent*/ parent )
    requires (!std::forward_range</*Base*/>);
(4) (seit C++23)
(nur zur Darstellung*)

Konstruiere einen Iterator. Die Überladungen (3,4) werden von begin() und end() von ranges::join_with_view aufgerufen.

 Überladung  Datenelemente
parent_ outer_it_ inner_it_
(1) initialisiert mit nullptr wertinitialisiert
(nur wenn Base models forward_range)
 standardinitialisiert 
(2) initialisiert mit i.parent_  initialisiert mit std::move(i.outer_it_ 
(nur wenn Base models forward_range)
(3) initialisiert mit
 std::addressof(parent) 
initialisiert mit std::move(outer)
(4) N/A
2) Nach der Initialisierung der Datenelemente, äquivalent zu

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) Nach der Initialisierung der Datenelemente, den äußeren Iterator anpassen, als ob der innere Iterator um operator++() erhöht worden wäre.

Parameter

i - ein veränderlicher Iterator
parent - ein std::ranges::join_with_view Objekt
outer - ein Iterator in den zugrundeliegenden Bereich von parent

Beispiel