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 ( /* voir description */ ) requires ( /* voir description */ ) ;
(depuis C++26)

Échange les objets pointés par les itérateurs sous-jacents de x et y . Équivalent à 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_
) ;

L'expression dans la clause requires est équivalente à std:: swappable_with < std:: iter_reference_t < /*iterator*/ > ,
std:: iter_reference_t < /*iterator*/ >> &&
( ... && std:: indirectly_swappable < ranges:: iterator_t < maybe-const  < Const, Views >>> )
.

Si x. it_  . valueless_by_exception ( ) || y. it_  . valueless_by_exception ( ) est true , le comportement est indéfini.

Cette fonction n'est pas visible par la recherche non qualifiée ou qualifiée ordinaire, et ne peut être trouvée que par la recherche dépendante des arguments lorsque concat_view :: iterator  < Const > est une classe associée des arguments.

Table des matières

Paramètres

x, y - itérateurs

Exceptions

Soit its un pack de lvalues, où chaque valeur est du type correspondant dans const ranges:: iterator_t < maybe-const  < Const, Views >> .

noexcept spécification :
noexcept ( noexcept ( ranges:: swap ( * x, * y ) ) && ... && noexcept ( ranges:: iter_swap ( its, its ) ) )

Exemple

Voir aussi

(C++20)
échange les valeurs référencées par deux objets déréférençables
(objet de point de personnalisation)
échange les éléments pointés par deux itérateurs
(modèle de fonction)