私は通常、pimplにboost :: scoped_ptrを使用します(コピーコンストラクターを処理するのを忘れても驚きがないため、1つの理由があります)
ただし、テンプレートでは、scoped_ptrのデストラクタの要件を満たすために、implが完全に定義されているcppファイルにデストラクタを配置することはできません。とにかく動作しますが、動作することが保証されているのか、それとも偶然なのかはわかりません。「ベストプラクティス」または標準はありますか?scoped_ptrは、コピー不可能なクラスのpimplsに最適なスマートポインターですか?
template <class T> class C {
public:
C(){}
~C(){}
private:
boost::scoped_ptr<T> pimpl_;
};