在boost.org网站上,我看到了一个阻止对shared_ptr删除px.get()的示例(http://www.boost.org/doc/libs/1_51_0/libs/smart_ptr/sp_techniques.html#preventing_delete).
这是一个很好的技术,我想在C++ 11中使用std :: unique_ptr来应用它,并且经过一段时间的工具后,我无法让他们的示例使用std :: unique_ptr.
是否可以防止在std :: unique_ptr上调用删除px.get()?
以下是来自boost.org网站的代码,显示了如何防止删除px.get:
class X
{
private:
~X();
class deleter;
friend class deleter;
class deleter
{
public:
void operator()(X * p) { delete p; }
};
public:
static shared_ptr<X> create()
{
shared_ptr<X> px(new X, X::deleter());
return px;
}
};
Run Code Online (Sandbox Code Playgroud)