我想做以下事情:
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
我想拥有foo< T>的模板struct foo朋友的所有可能的实例化.为了所有T.
我该如何工作?
编辑:这个
template <typename T>
struct foo
{
template <typename>
friend struct foo;
private:
// ...
};
似乎编译,但它是否正确?朋友和模板的语法非常不自然.
解决方法:
template<typename> friend class foo
然而,这将使所有模板彼此成为朋友.
但我认为这就是你想要的?