阻止移动unique_ptr C ++ 11

时间:2013-03-08 14:58:31

标签: c++ c++11 move-semantics unique-ptr

有没有办法阻止用户使用

显式获取唯一指针的所有权
 std::move

2 个答案:

答案 0 :(得分:8)

将其设为const

unique_ptr移动构造函数采用非const 右值引用,因此无法使用const对象调用。

const unique_ptr<int> owner(new int);
// ...
unique_ptr<int> thief = std::move(owner);  // ERROR

这允许unique_ptrboost::scoped_ptr

一样使用

答案 1 :(得分:5)

通过返回std::unique_ptr,您已放弃对象的控制权。新主人要么将其销毁,要么将其传递给其他人。

如果您不打算让用户释放该对象,则返回一个引用。

你有boost::scoped_ptr / const std::unique_ptr(参见Jonathan的回答),它在技术上回答了你的问题 - 来电者发布,但无法泄露资源 - 但我看不出引人注目例如为什么你需要这个而不是std::unique_ptr或参考