使类模板成为不同实例化的朋友

时间:2018-05-11 18:22:34

标签: c++ templates friend

我想让A<T>成为A<T2>的朋友,适用于任何类型TT2

这可能吗?

感谢。

测试(也在godbolt.org):

template <class T>
class A {
public:
    template <typename T2> void test(A<T2>& a) { a.v_ = 2;}
private:
    int v_;
    template <typename T2> friend A;
};

int main() {
    A<int> a;
    A<int> b;
    b.test(a);
    return 0;
}

编译器错误:

<source>:7:28: error: friend type templates must use an elaborated type

    template <typename T2> friend A;

                           ^~~~~~~~

1 个答案:

答案 0 :(得分:2)

应该是

template <typename T2> friend class A;