std::swap(std::variant)
De cppreference.com
| 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
Ejemplo
Ejecuta este código
#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) |