Namensräume
Varianten
Aktionen

iter_swap(ranges::concat_view::Iterator)

Von cppreference.com
< cpp‎ | ranges‎ | concat view‎ | iterator
 
 
Bereichsbibliothek
Range-Adaptoren
 
 
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y )
    noexcept( /* siehe Beschreibung */ ) requires ( /* siehe Beschreibung */ );
(seit C++26)

Vertauscht die Objekte, auf die von den zugrunde liegenden Iteratoren von x und y gezeigt wird. Äquivalent zu std::visit
(
    [&](const auto& it1, const auto& it2)
    {
        if constexpr (std::is_same_v<decltype(it1), decltype(it2)>)
            ranges::iter_swap(it1, it2);
        else
            ranges::swap(*x, *y);
    },
    x.it_ ,
    y.it_
);

Der Ausdruck in der requires-Klausel ist äquivalent zu std::swappable_with<std::iter_reference_t</*Iterator*/>,
                    std::iter_reference_t</*Iterator*/>> &&
(... && std::indirectly_swappable<ranges::iterator_t<maybe-const <Const, Views>>>)
.

Wenn x.it_ .valueless_by_exception() || y.it_ .valueless_by_exception() true ist, ist das Verhalten undefiniert.

Diese Funktion ist für gewöhnliche unqualifizierte oder qualifizierte Suche nicht sichtbar und kann nur durch argumentabhängige Suche gefunden werden, wenn concat_view::Iterator <Const> eine zugehörige Klasse der Argumente ist.

Inhalt

[edit] Parameter

x, y - iteratoren

[edit] Ausnahmen

Sei its ein Pack von Lvalues, wobei jeder Wert vom entsprechenden Typ in const ranges::iterator_t<maybe-const <Const, Views>>.

noexcept-Spezifikation:  
noexcept(noexcept(ranges::swap(*x, *y)) && ... && noexcept(ranges::iter_swap(its, its)))

[edit] Beispiel

[edit] Siehe auch

(C++20)
tauscht die von zwei dereferenzierbaren Objekten referenzierten Werte
(Customization-Punkt-Objekt)[bearbeiten]
Tauscht die Elemente, auf die zwei Iteratoren zeigen
(Funktionstempelat) [edit]