プライベート構造のクラスがある場合、そのクラスのメンバー関数内からそのクラスのboost::make_shared()
を構築するためにを使用すると、gcc4.6を使用してコンパイラエラーが発行されます。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
、コンパイラエラーが発生します。
何かご意見は?