グローバル関数をクラスの「フレンド」として宣言しようとしています:
namespace first
{
namespace second
{
namespace first
{
class Second
{
template <typename T> friend T ::first::FirstMethod();
};
}
}
}
このコードを Visual C++ 2008 でコンパイルすると、次のようになります。
error C3254: 'first::second::first::Second' : class contains explicit override 'FirstMethod' but does not derive from an interface that contains the function declaration
error C2838: 'FirstMethod' : illegal qualified name in member declaration
template <typename T> friend T first::FirstMethod();
代わりに使用すると、次のようになります。
error C2039: 'FirstMethod' : is not a member of 'first::second::first'
フレンド関数を宣言する適切な方法は何ですか?