std::optional<T>::reset
De cppreference.com
<tbody>
</tbody>
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.
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
Véase también
| Asigna contenido. (función miembro pública) |