boost库中是否有一些与C++1x的std::unique_ptr等效的类?我正在寻找的行为是能够拥有一个异常安全的工厂函数,就像这样…
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.
}
编辑:现在,我正在使用这个hack,这似乎是我目前所能得到的最好的…
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.
}
发布于 2010-06-02 05:39:09
interprocess库中的unique_ptr
怎么样?
发布于 2010-06-02 23:20:37
我用过霍华德·辛纳特的unique_ptr。如果你不擅长从你的编译器中读取疯狂的元编程错误,你可能会想要避开。然而,在90%的情况下,它的行为就像unique_ptr一样。
否则,我建议将参数作为boost::scoped_ptr&
传递,并在内部交换以窃取所有权。要获得unique_ptr样式返回值,请使用auto_ptr
。捕获shared_ptr
或scoped_ptr
中的auto_ptr
返回值,避免直接使用auto_ptr
。
https://stackoverflow.com/questions/2953530
复制相似问题