67

次のことをしたいのですが。

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

私はすべての人のtemplate struct foo友人のfoo<T>すべての可能なインスタンス化をしたいと思いますT

これを機能させるにはどうすればよいですか?

編集:これ

template <typename T>
struct foo
{
    template <typename>
    friend struct foo;

private:
    // ...
};

コンパイルしているようですが、正しいですか?フレンドとテンプレートの構文は非常に不自然です。

4

1 に答える 1

107
template<typename> friend class foo

ただし、これにより、すべてのテンプレートが互いに友達になります。しかし、私はこれがあなたが望むものだと思いますか?

于 2010-07-20T17:53:26.313 に答える