私が持っているとしましょう
template<class T>
void f(T t);
と
template<class T>
class X
{
};
f<T>
の友達になりたいだけなら、次のようX<T>
に宣言します。
template<class T>
class X
{
friend void f<>(T t);
};
f が次のように宣言されているとします。
template<class T, class U>
void f(T t, U u);
次のように宣言したいと思います: for any type U
f<T, U>
is friend of X<T>
. だから私は と友達になりたいのですf<int, char>
が、 とは友達になりX<int>
たくないのです。これは可能ですか?以下はコンパイルされていないようですf<char, int>
X<int>
template<class T>
class X
{
template <class U>
friend void f<>(T t, U, u);
};
テンプレート全体をフレンドとして宣言する方法を知っていることに注意してください。