std::optional<T>::reset
De cppreference.com
void reset() noexcept; |
(desde C++17) | |
Si *this contiene un valor, destruir ese valor como si lo fuera por value().T::~T(). De lo contrario, no tiene efecto.
*this no contiene un valor después de esta llamada.
[editar] Ejemplo
Ejecuta este código
#include <optional> #include <iostream> struct A { std::string s; A(std::string str) : s(std::move(str)) { std::cout << " construido\n"; } ~A() { std::cout << " destruido\n"; } A(const A& o) : s(o.s) { std::cout << " construido por copia\n"; } A(A&& o) : s(std::move(o.s)) { std::cout << " construido por movimiento\n"; } A& operator=(const A& other) { s = other.s; std::cout << " asignado por copia\n"; return *this; } A& operator=(A&& other) { s = std::move(other.s); std::cout << " asignado por movimiento\n"; return *this; } }; int main() { std::cout << "Crear un optional vacío:\n"; std::optional<A> opt; std::cout << "Construir y asignar valor:\n"; opt = A("Lorem ipsum dolor sit amet, consectetur adipiscing elit nec."); std::cout << "Restablecer optional:\n"; opt.reset(); std::cout << "Fin del ejemplo\n"; }
Salida:
Crear un optional vacío: Construir y asignar valor: construido construido por movimiento destruido Restablecer optional: destruido Fin del ejemplo
[editar] Véase también
Asigna contenido. (función miembro pública) |