web-dev-qa-db-fra.com

Comment remettre un boost :: optional à un état non initialisé?

Comment puis-je "réinitialiser"/"désactiver" 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
}
51
Guy Sirton
x = boost::none;
92
Benjamin Lindley

Une façon simple est la suivante:

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

Ou simplement:

x.reset(); 

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

12
Nawaz