如果我有一个具有私有构造的类,使用 gcc 4.6 从该类的成员函数中boost::make_shared()
构造shared_ptr
该类的一个将发出编译器错误。
#include "boost/shared_ptr.hpp"
#include "boost/make_shared.hpp"
class Foo
{
private:
Foo(int a){};
public:
static boost::shared_ptr<Foo> do_foo(){ return boost::make_shared<Foo>(5); }
friend template boost::shared_ptr<Foo> boost::make_shared<Foo>( Arg1 && arg1, Args && ... args );
}
int main()
{
auto f = Foo::do_foo();
}
调用Foo::do_foo
将导致编译器错误。
有什么想法吗?