56 votes

Comment définir un boost :: facultatif pour revenir à un état non initialisé ?

Comment puis-je "reset"/"unset" un 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
}

106voto

Benjamin Lindley Points 51005
x = boost::none;

14voto

Nawaz Points 148870

Voici un moyen simple :

 x = optional<int>(); //reset to default

Ou simplement:

 x.reset(); 

Il détruit la valeur actuelle, la laissant non initialisée (par défaut).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X