次のようなグローバル関数があります。
namespace X
{
namespace Y
{
template <R, ...T>
R foo(T&&... args)
{
R r(args...);
return r;
}
}
}
次に、別のクラスで、この関数を のフレンドとしてA
宣言します。だから私はした:foo
A
class A
{
template <R, ...T>
friend R X::Y::foo(T&&... args);
A(int x, int y){}
};
X::Y::foo<A>(4, 5)
ここで、 foo が のプライベート コンストラクターにアクセスできないというエラーでコンパイルに失敗すると呼び出しますA
。エラーを理解できません。 を正しくfoo
フレンドとして宣言するにはどうすればよいですか?A
前もって感謝します。