模板的朋友
我想要做以下事情:
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
这将使所有的模板成为彼此的朋友。 但我认为这是你想要的?