std::swap(std::optional)
De cppreference.com
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.
Contenido |
[editar] Parámetros
lhs, rhs | - | Objetos optional cuyos estados hay que intercambiar.
|
[editar] Valor de retorno
(Ninguno)
[editar] Excepciones
[editar] 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)
[editar] Véase también
Intercambia el contenido. (función miembro pública) |