此代码按预期工作:
void f() noexcept {}
但在 GCC 4.7.2 中,以下操作会失败并出现错误:
auto f() -> void noexcept {}
// error: expected initializer before ‘noexcept’
我读过的文章没有说任何关于无法指定的内容noexcept
在训练返回类型中。这是一个错误(并且在最新版本的 GCC 中已修复)吗?或者标准明确禁止这样做?
这不是正确的语法。它应该是:
auto f() noexcept -> void { }
根据 C++11 标准第 8.4.1/2 段:
D1
( 参数声明子句 ) CV-限定符-seq(opt)
ref 限定符(可选)*例外规范(可选)*属性说明符序列(opt)*尾随返回类型(opt)*
如 8.3.5 中所述。函数只能在命名空间或类范围内定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)