chico sirton
¿Cómo puedo “restablecer” https://stackoverflow.com/”unset” a boost::optional
?
optional<int> x;
if( x )
{
// We won't hit this since x is uninitialized
}
x = 3;
if( x )
{
// Now we will hit this since x has been initialized
}
// What should I do here to bring x back to uninitialized state?
if( x )
{
// I don't want to hit this
}
benjamin lindley
x = boost::none;
-
[citation needed] (Es por eso que “tuvo” que evadir el límite mínimo de caracteres en las respuestas).
– Carreras de ligereza en órbita
22 de enero de 2012 a las 3:48
-
Algunos detalles más: boost.org/doc/libs/1_60_0/libs/opcional/doc/html/opcional/…
– Kirill Golikov
22 de abril de 2016 a las 12:24
Una forma sencilla es esta:
x = optional<int>(); //reset to default
O simplemente:
x.reset();
Destruye el valor actual, dejándolo sin inicializar (predeterminado).
-
-
Aquí está un enlace mas especifico. Básicamente, la respuesta de Benjamin es la nueva
.reset();
.– Xeo
22 de enero de 2012 a las 2:40
-
optional<T>::reset();
es simple de usar correctamente y difícil de usar incorrectamente, entonces, ¿por qué desaprobarlo? (cita de una famosa directriz de Scott Meyers)– floreciente
13 de abril de 2018 a las 15:47
Es un poco un misterio para mí por qué no hay
optional::clear
ooptional::empty
.– pmr
22 de enero de 2012 a las 1:56
Probablemente porque no es necesario que haya uno.
– Carreras de ligereza en órbita
22 de enero de 2012 a las 1:57
@LightnessRacesinOrbit: ¿Puede dar más detalles? Estoy viendo esto en el contexto de las variables miembro opcionales en las que esencialmente desea restablecer parte del estado de un objeto. Tal vez haya una mejor manera de hacerlo.
– Guy Sirton
22 de enero de 2012 a las 2:04
@Guy: En su lugar, explique (para pmr) por qué debe haber un
optional::clear
ooptional::empty
.– Carreras de ligereza en órbita
22 de enero de 2012 a las 3:48
@LightnessRacesinOrbit: No dije que tiene que haber uno 🙂 pero lo intentaré, tenemos vector::clear y shared_ptr::reset, entonces, ¿por qué es opcional::borrar u opcional::reiniciar diferente? ¿Está diciendo que no se debe restablecer opcional o está diciendo que el lenguaje de asignación es todo lo que uno necesita o está diciendo que solo debería haber una forma de hacer algo? No estoy discutiendo, solo estoy interesado en tus pensamientos…
– Guy Sirton
22 de enero de 2012 a las 23:10