Какие трюки можно использовать для минимизации рабочей нагрузки при реализации классов pImpl?
Заголовок:
class Foo {
struct Impl;
boost::scoped_ptr<Impl> self;
public:
Foo(int arg);
~Foo();
// Public member functions go here
};
Реализация:
struct Foo::Impl {
Impl(int arg): something(arg) {}
// All data members and private functions go here
};
Foo::Foo(int arg): self(new Impl(arg)) {}
Foo::~Foo() {}
// Foo public functions go here (and they refer to data as self->something)
Как бы вы это улучшили, используя Boost, возможно наследование, CRTP или другие трюки, чтобы избежать как можно большего числа шаблонов? Производительность выполнения не является проблемой.