在研究问题的答案时(基于此答案),我尝试执行以下操作:
template <class T>
class friendly {
friend class T;
};
friendly<string> howdy;
这无法编译并出现以下错误:
错误:模板参数“T”不能在详细类型说明符朋友类 T 中使用;
从我的好朋友谷歌那里可以了解到,这样我就不会意外地尝试实例化friendly<int>
,但为什么在编译模板时会出现错误?用无效类型实例化模板时不应该是错误吗(比如我写的int f() { return T::foo(); }
)