Как установить boost :: необязательный обратно в неинициализированное состояние? - PullRequest
49 голосов
/ 22 января 2012

Как я могу "сбросить" / "сбросить" 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
}

Ответы [ 2 ]

90 голосов
/ 22 января 2012
x = boost::none;

12 голосов
/ 22 января 2012

Один простой способ:

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

Или просто:

x.reset(); 

Уничтожает текущее значение, оставляя его неинициализированным (по умолчанию).

...