如何将模板化的struct / class声明为朋友?

时间:2010-07-20 17:46:41

标签: c++ templates friend

我想做以下事情:

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>的{​​{1}}朋友的所有可能实例化。

我如何使这项工作?

编辑:这个

T

似乎编译,但它是否正确?朋友和模板的语法非常不自然。

1 个答案:

答案 0 :(得分:83)

template<typename> friend class foo
然而,这将使所有模板彼此成为朋友。 但我认为这就是你想要的?