pimpl-идиома в шаблоне; какой умный указатель?

Я обычно использую boost :: scoped_ptr для pimpl (по одной причине, потому что тогда меня не ждут сюрпризы, если я забуду разобраться с конструктором копирования)

Однако с шаблонами я не могу просто поставить деструктор в файле cpp, где impl полностью определен, чтобы выполнить требования деструктора scoped_ptr. Он все равно работает, но я не уверен, работает ли он гарантированно или просто случайно. Есть ли какая-то «лучшая практика» или стандарт? Является ли scoped_ptr лучшим умным указателем для сутенеров в некопируемых классах?

template <class T> class C {
public:
    C(){}
    ~C(){}
private:
    boost::scoped_ptr<T> pimpl_;
};
6
задан odinthenerd 5 December 2011 в 14:05
поделиться