Есть ли какой-нибудь эквивалентный класс для C ++ 1x std :: unique_ptr в библиотеках boost? Поведение, которое я ищу, - это возможность иметь заводскую функцию, безопасную для исключений, например, так ...
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.
}
РЕДАКТИРОВАТЬ: Прямо сейчас я использую этот хак, который кажется лучшим, что я могу получить на данный момент ...
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.
}