Espacios de nombres
Variantes
Acciones

std::swap(std::variant)

De cppreference.com
< cpp‎ | utility‎ | variant
 
 
Biblioteca de servicios
 
 
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...

Contenido

[editar] Parámetros

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

[editar] Valor de retorno

(Ninguno)

[editar] Excepciones

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

[editar] 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

[editar] Véase también

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