GCC 错误:非命名空间范围中的显式专业化
问题:
为什么当在 a 中显式专门化成员函数模板时,以下代码无法在 GCC 中编译类?
template<typename T> struct Widget { template<typename U> void foo(U) { } template<> void foo(int*) { } };
答案:
根据 C 标准([temp.expl.spec],第 2 段),显式特化可以在任何可以定义相应的主模板的范围。因此,代码也应该在 GCC 中编译。
GCC 错误和报告:
在 GCC 中编译失败可能是一个错误。要报告该问题,请按照以下步骤操作:
标准参考:
C 标准部分 [temp.expl.spec] 第 2 段指出:
An显式专业化可以在定义相应主模板的任何范围内声明。
以上是为什么 GCC 无法编译类中成员函数模板的显式特化?的详细内容。更多信息请关注PHP中文网其他相关文章!