Load
関数テンプレートのフレンドに class へのアクセス権を与えるにはどうすればよい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>();
}