30 May
2016
30 May
'16
5:47 a.m.
On 2016-05-30 12:36, Emil Dotchevski wrote:
My 2c:
In foo.h, instead of
class foo { class pimpl pimpl * p_; public: foo(); ~foo(); void do_something(); };
It's better to do it the C way: simply leave foo incomplete:
struct foo; foo * create_foo(); void destroy_foo( foo * ); void do_something( foo * );
The above is much improved using shared_ptr:
struct foo; shared_ptr<foo> create_foo(); void do_something( foo * );
If you are saying that pimpl is conceptually simple, then I agree. std::unique_ptr is conceptually simple as well. If you are saying that the snippets you provided are sufficient, then I have to disagree. Say, pimpl in the context of polymorphic hierarchies or value pimpls come to mind.