可能重复:
如何允许模板功能具有朋友(-like)访问权限?
如何让函数模板Load
朋友访问类Foo
?
这里的目标是限制对构造函数的访问:只能构造函数模板Load
。
CODE(请忽略内存泄漏)
class Foo {
Foo() { }
template<> friend Foo const& Load<Foo>(); // error here
};
template<typename T>
T const&
Load() { return *(new T); }
int main( int argc, char* argv[] )
{
Foo const& f = Load<Foo>();
}