Existe-t-il une classe équivalente pour std :: unique_ptr dans les bibliothèques boost de C ++ 1x? Le comportement que je recherche, c’est de pouvoir avoir une fonction d’usine exceptionnellement sûre, comme si ...
std::unique_ptr<Base> create_base()
{
return std::unique_ptr<Base>(new Derived);
}
void some_other_function()
{
std::unique_ptr<Base> b = create_base();
// Do some stuff with b that may or may not throw an exception...
// Now b is destructed automagically.
}
EDIT: En ce moment, j'utilise ce hack, qui semble être le meilleur que je puisse obtenir à ce stade ...
Base* create_base()
{
return new Derived;
}
void some_other_function()
{
boost::scoped_ptr<Base> b = create_base();
// Do some stuff with b that may or may not throw an exception...
// Now b is deleted automagically.
}