
27 Jul
2008
27 Jul
'08
2:15 p.m.
Hi, I have a question on make_shared. Consider a class which intends to force all instances to be handled via a shared_ptr. I used to do this by putting the ctors into the private section and adding static create()-methods in the public section. Example: class X { private: X( int, double ); public: static shared_ptr<X> create( int i, double d ) { return shared_ptr<X>( new X( i, d ) ); } }; Replacing the returned expression with make_shared<X>( i, d ) wouldn't work, since it requires a public ctor. Is there any solution to this or do I have to make a decision between efficiency and a safe interface for X? Regards, Daniel