友元声明和显式模板实例化声明
Friend declaration and explicit template instantiation declaration
假设我有一个函数模板
template <typename T>
void f(T) {}
然后,我们就可以进行好友声明了
friend void f<int>(int);
和显式模板实例化声明
extern template void f<int>(int);
这两个声明在某种程度上是相关的还是完全独立的?如果相关,它们如何相互作用?
一个 friend
声明没有 "interact" 任何东西,除了被声明为友元的函数的定义,它被允许访问 [= 的私有成员18=] 包含声明。
所以,不,friend
声明和 extern template
声明之间没有特殊的交互作用,尽管它们都引用相同的函数(在这个意义上,它们是相关的,但我假设你在写问题时意识到这一点)。
假设我有一个函数模板
template <typename T>
void f(T) {}
然后,我们就可以进行好友声明了
friend void f<int>(int);
和显式模板实例化声明
extern template void f<int>(int);
这两个声明在某种程度上是相关的还是完全独立的?如果相关,它们如何相互作用?
一个 friend
声明没有 "interact" 任何东西,除了被声明为友元的函数的定义,它被允许访问 [= 的私有成员18=] 包含声明。
所以,不,friend
声明和 extern template
声明之间没有特殊的交互作用,尽管它们都引用相同的函数(在这个意义上,它们是相关的,但我假设你在写问题时意识到这一点)。