朋友声明和显式模板实例化声明

时间:2015-10-01 20:37:22

标签: c++ templates c++11 language-lawyer explicit-instantiation

假设我有一个功能模板

template <typename T>
void f(T) {}

然后,我们可以有一个朋友声明

friend void f<int>(int);

和显式模板实例化声明

extern template void f<int>(int);

这两个声明是以某种方式相关还是完全独立?如果相关,他们如何互相交流?

1 个答案:

答案 0 :(得分:1)

friend声明不与任何事物“交互”,除了声明为朋友的函数的定义,允许访问包含声明的类的私有成员。 / p>

所以,不,friend声明和extern template声明之间没有特殊的互动,虽然它们都指的是相同的功能(从这个意义上讲,它们是相关的,但我假设你当你写这个问题时意识到这一点。)