boost.org Webサイトで、shared_ptrのdelete 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での例を完全に機能させることはできません。
削除px.get()がstd :: unique_ptrで呼び出されないようにすることは可能ですか?
削除px.getが呼び出されないようにする方法を示すboost.orgWebサイトのコードは次のとおりです。
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;
}
};