非命名空间范围中的显式专业化
尽管在 Clang 中成功编译,但给定的代码无法在 GCC 中编译。根据 C 标准 ([temp.expl.spec]),可以在可以定义相应主模板的任何范围内声明显式特化。
此行为似乎是 GCC 中的一个错误。根据 CWG 727,[temp.expl.spec] 中有关显式专业化的规则已被修改,以允许在任何相关范围内进行此类声明。
显式专业化的范围
原始标准规定,显式专业化应该在包含专业模板的命名空间中声明。但是,当前标准允许在可以定义主模板的任何范围内显式专业化:
GCC 未能遵守此更新规则构成了一个错误。该问题已被识别为 Bug 85282,目前由 GCC 开发团队跟踪。
以上是为什么 GCC 无法在非命名空间范围内编译显式专业化?的详细内容。更多信息请关注PHP中文网其他相关文章!