Namespaces
Variants

iter_swap (ranges::concat_view:: iterator )

From cppreference.net
Ranges library
Range adaptors
friend constexpr void iter_swap ( const /*iterator*/ & x, const /*iterator*/ & y )
noexcept ( /* siehe Beschreibung */ ) requires ( /* siehe Beschreibung */ ) ;
(seit C++26)

Tauscht die Objekte aus, auf die durch die zugrundeliegenden Iteratoren von x und y gezeigt wird. Entspricht 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öhnliches unqualified oder qualified lookup nicht sichtbar und kann nur durch argument-dependent lookup gefunden werden, wenn concat_view :: iterator  < Const > eine assoziierte Klasse der Argumente ist.

Inhaltsverzeichnis

Parameter

x, y - Iteratoren

Exceptions

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

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

Beispiel

Siehe auch

(C++20)
vertauscht die Werte, auf die zwei dereferenzierbare Objekte verweisen
(Anpassungspunktobjekt)
vertauscht die Elemente, auf die zwei Iteratoren zeigen
(Funktionstemplate)