次のことを行いたいのですが。
template <typename T>
struct foo
{
template <typename S>
friend struct foo<S>;
private:
// ...
};
しかし、私のコンパイラ(VC8)はそれを窒息させます:
error C3857: 'foo<T>': multiple template parameter lists are not allowed
すべてのT
に対して、template struct foo
のfoo<T>
の友達の可能なすべてのインスタンス化をしたいのですが。
これを機能させるにはどうすればよいですか?
編集:これ
template <typename T>
struct foo
{
template <typename>
friend struct foo;
private:
// ...
};
コンパイルされているようですが、正しいですか?フレンドとテンプレートの構文は非常に不自然です。
template<typename> friend class foo
ただし、これにより、すべてのテンプレートが互いに友達になります。しかし、私はこれがあなたが望むものだと思いますか?