Namespaces
Variants

iter_swap(ranges::concat_view::iterator)

Depuis fr.cppreference.net
 
 
Bibliothèque de plages (ranges)
Adaptateurs de plages
 
 
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y )
    noexcept( /* see description */ ) requires ( /* see description */ );
(depuis C++26)

Échange les objets pointés par les itérateurs sous-jacents de x et y. Équivaut à 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 lors d'une recherche non qualifiée ou qualifiée ordinaire, et ne peut être trouvée que par recherche dépendante des arguments lorsque concat_view::iterator <Const> est une classe associée aux arguments.

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)