Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
此代码按预期工作:
void f() noexcept {}
但以下失败并在 GCC 4.7.2 中出现错误:
auto f() -> void noexcept {} // error: expected initializer before ‘noexcept’
我读过的文章没有提到无法noexcept在训练返回类型中指定。这是一个错误(并且已在最新版本的 GCC 中修复)?还是标准明确禁止这样做?
noexcept
这不是正确的语法。它应该是:
auto f() noexcept -> void { }
根据 C++11 标准的第 8.4.1/2 段:
D1(参数声明子句) cv-qualifier-seq(opt) ref-qualifier(opt) *exception-specification(opt)* attribute-specifier-seq(opt) *trailing-return-type(opt)* 如 8.3.5 所述。一个函数只能在命名空间或类范围内定义。
D1(参数声明子句) cv-qualifier-seq(opt)
D1
ref-qualifier(opt) *exception-specification(opt)* attribute-specifier-seq(opt) *trailing-return-type(opt)*
如 8.3.5 所述。一个函数只能在命名空间或类范围内定义。