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 ( /* ver descripción */ ) requires ( /* ver descripción */ ) ;
(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 es indefinido.

Esta función no es visible para la búsqueda unqualified o qualified ordinaria, y solo puede ser encontrada mediante argument-dependent lookup cuando concat_view :: iterator  < Const > es una clase asociada de los argumentos.

Contenidos

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)