首页 > 后端开发 > C++ > 为什么 GCC 无法编译非命名空间范围内的显式专业化?

为什么 GCC 无法编译非命名空间范围内的显式专业化?

Susan Sarandon
发布: 2024-11-22 00:08:10
原创
458 人浏览过

Why Does GCC Fail to Compile Explicit Specializations in Non-Namespace Scope?

非命名空间范围内的显式专业化:GCC 编译问题

尽管遵守 C 标准,但它明确允许在主模板可以存在的任何范围内进行显式专业化已定义,所提供的代码在 GCC 中显示编译错误,但在 Clang 中则不然。这种差异引发了这样的问题:这是否是 GCC 中的错误以及如何在其错误跟踪器中找到它。

根据 [temp.expl.spec],第 2 段,“可以在可以定义相应主模板的任何范围。”但是,带有 -std=c 2a 的 GCC HEAD 8.0.1 会生成一条错误消息,指示在非命名空间范围内不允许显式专业化。

这种与标准的偏差表明 GCC 中存在潜在错误。要在错误跟踪器中找到此问题,可以在 GCC 错误数据库中搜索“显式专业化”或“范围”。或者,可以直接使用错误报告系统报告该问题。

在这种情况下,该问题已报告为 Bug 85282,该错误承认该问题及其与 CWG 727 修正案的不一致。该修正案修订了标准,允许在可以定义主模板的任何范围内进行显式专业化。

此错误的含义是,GCC 用户在尝试在命名空间范围之外声明显式专业化时可能会遇到编译问题,尽管 C 标准允许这样的声明。为了缓解这个问题,用户可以针对非 GCC 编译器,或者将显式专业化封装在命名空间中,这是目前唯一与 GCC 对标准的解释兼容的范围。

以上是为什么 GCC 无法编译非命名空间范围内的显式专业化?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板