Namespaces
Variants

iter_swap(ranges::concat_view::iterator)

De es.cppreference.net
 
 
Biblioteca de rangos
Adaptadores de rango
 
 
friend constexpr void iter_swap( const /*iterator*/& x, const /*iterator*/& y )
    noexcept( /* see description */ ) requires ( /* see description */ );
(desde C++26)

Intercambia los objetos apuntados por los iteradores subyacentes de x y y. Equivalente a 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_
);

La expresión en la cláusula requires es equivalente a 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() es true, el comportamiento no está definido.

Esta función no es visible para la búsqueda ordinaria no calificada o calificada, y solo se puede encontrar mediante búsqueda dependiente de argumentos cuando concat_view::iterator <Const> es una clase asociada de los argumentos.

Parámetros

x, y - iteradores

Excepciones

Sea its un paquete de lvalues, donde cada valor es del tipo correspondiente en const ranges:: iterator_t < maybe-const  < Const, Views >> .

noexcept especificación:
noexcept ( noexcept ( ranges:: swap ( * x, * y ) ) && ... && noexcept ( ranges:: iter_swap ( its, its ) ) )

Ejemplo

Véase también

(C++20)
intercambia los valores referenciados por dos objetos desreferenciables
(objeto de punto de personalización)
intercambia los elementos apuntados por dos iteradores
(plantilla de función)