std::swap(std::optional)
De cppreference.com
<tbody>
</tbody>
| Definido en el archivo de encabezado <optional>
|
||
template< class T > void swap( optional<T>& lhs, optional<T>& rhs ) noexcept(/* véase más abajo */); |
(desde C++17) | |
Sobrecarga el algoritmo std::swap para std::optional. Intercambia el estado de lhs con el de rhs. Efectivamente llama a lhs.swap(rhs).
Esta plantilla de función no participa en la resolución de sobrecargas a menos que std::is_move_constructible_v<T> y std::is_swappable_v<T> sean ambas true.
Parámetros
| lhs, rhs | - | Objetos optional cuyos estados hay que intercambiar.
|
Valor de retorno
(Ninguno)
Excepciones
Ejemplo
Ejecuta este código
#include <iostream>
#include <optional>
#include <string>
int main()
{
std::optional<std::string> a{"██████"}, b{"▒▒▒▒▒▒"};
auto imprimir = [&](auto const& s) {
std::cout
<< s << "\t"
<< "a = " << a.value_or("(nulo)") << " "
<< "b = " << b.value_or("(nulo)") << '\n';
};
imprimir("Inicialmente:");
std::swap(a, b);
imprimir("swap(a, b):");
a.reset();
imprimir("\n""a.reset():");
std::swap(a, b);
imprimir("swap(a, b):");
}
Salida:
Inicialmente: a = ██████ b = ▒▒▒▒▒▒
swap(a, b): a = ▒▒▒▒▒▒ b = ██████
a.reset(): a = (nulo) b = ██████
swap(a, b): a = ██████ b = (nulo)
Véase también
| Intercambia el contenido. (función miembro pública) |