如果我有一個私有構造類,使用boost :: make_shared從該類的成員函數內構造該類的shared_ptr會發出編譯器錯誤使用gcc 4.6。C++ 0x和Friend函數和boost :: make_shared
#include "boost/shared_ptr.hpp"
#include "boost/make_shared.hpp"
class Foo
{
private:
Foo(int a){};
public:
static boost::shared_ptr do_foo(){ return boost::make_shared(5); }
friend template boost::shared_ptr boost::make_shared(Arg1 && arg1, Args && ... args);
}
int main()
{
auto f = Foo::do_foo();
}
對Foo::do_foo
的調用將導致編譯器錯誤。
有什麼想法?
被編輯爲包含可編譯代碼。
什麼是Arg1和Args? – sellibitze 2010-09-10 08:29:40
@sellibitze可能不應該在那裏,但我只是複製粘貼OP的代碼。 'make_shared'確實需要可變數量的參數,並將它們傳遞給目標類型的構造函數。 – kwatford 2010-09-10 14:09:23
我可以發誓,我做到了...... – Raindog 2010-09-10 19:24:06