我想做以下事情:
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
似乎编译,但它是否正确?朋友和模板的语法非常不自然。
答案 0 :(得分:83)
template<typename> friend class foo
然而,这将使所有模板彼此成为朋友。
但我认为这就是你想要的?