有自己的类模板和其他模板参数的朋友

时间:2016-03-25 09:11:21

标签: c++ templates friend

是否可以将自己的类模板与其他模板参数声明为朋友?

template<class T, class... Ts>
class A {
    template<class U> friend class A<U, Ts...>;    //compile error - C3772  'A<U>': invalid friend template declaration 
};

2 个答案:

答案 0 :(得分:2)

template<class T, class... Ts>
class A {
    template<class U, class... Us> friend class A; //here you go
};

无需在A

之后指定模板参数

答案 1 :(得分:2)

无法将类模板的部分特化声明为朋友。只有(完整)专业化或整个类模板。如果你真的需要与所有$grey: #ccc; .element { box-shadow: 5px 5px 0 $grey; } 专业化成为朋友,你需要与整个模板建立友好关系:

U