在研究问题的答案(基于this answer)时,我尝试执行以下操作:
template <class T>
class friendly {
friend class T;
};
friendly<string> howdy;
无法编译,并出现以下错误:
从我的好 friend Google那里了解到,这样做是为了避免意外地实例化
friendly<int>
,但是为什么在编译模板时会出现错误?实例化具有无效类型的模板时是否应该出错(例如我写了int f() { return T::foo(); }
) 最佳答案
该标准的第7.1.5.3节明确将其描述为格式错误的详细类型说明符的示例。
可以在here上找到有关该主题的讨论。