Espacios de nombres
Variantes

std::swap(std::variant)

De cppreference.com
 
 
Biblioteca de servicios
Apoyo del lenguaje
Apoyo de tipos (tipos básicos, RTTI)
Macros de prueba de característica de la biblioteca (C++20)
Servicios de programa
Funciones variádicas
Apoyo de corrutinas (C++20)
Apoyo de contratos (C++26)
Comparación de tres vías (C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

 
 
Definido en el archivo de encabezado <variant>
template <class... Types>
void swap(variant<Types...>& lhs, variant<Types...>& rhs) noexcept(/* véase más abajo */);
(desde C++17)

Sobrecarga el algoritmo std::swap para std::variant. Efectivamente llama a lhs.swap(rhs).

Esta sobrecarga solo participa en la resolución de sobrecargas si is_move_constructible_v<T_i> y is_swappable_v<T_i> son ambas true para toda T_i en Types...

Parámetros

lhs, rhs - Objetos variantes cuyos valores hay que intercambiar.

Valor de retorno

(Ninguno)

Excepciones

Especificación noexcept:   (desde C++11)
noexcept(noexcept(lhs.swap(rhs)))

Ejemplo

#include <variant>
#include <string>
#include <iostream>

auto print = [](auto const& v, char term = '\n') {
    std::visit([](auto&& o) { std::cout << o; }, v);
    std::cout << term;
};

int main()
{
    std::variant<int, std::string> v1{123}, v2{"XYZ"};
    print(v1, ' ');
    print(v2);

    std::swap(v1, v2);
    print(v1, ' ');
    print(v2);

    std::variant<double, std::string> v3{3.14};
    // std::swap(v1, v3); // ERROR: ~ paquetes de parámetros inconsistentes
}

Salida:

123 XYZ
XYZ 123

Véase también

Intercambia con otro variante.
(función miembro pública) [editar]