在研究问题的答案时(基于this answer),我尝试执行以下操作:
template <class T>
class friendly {
friend class T;
};
friendly<string> howdy;
无法使用以下错误进行编译:
错误:模板参数“T”不能用于 精心设计的类型说明符 朋友班T;
从我的好朋友Google可以理解的是,我不会不小心尝试实例化friendly<int>
,但为什么在编译模板时这是一个错误?在使用无效类型实例化模板时不应该是错误(例如我写的int f() { return T::foo(); }
)