Ker*_*g73 5 c++ language-lawyer compiler-bug
Clang 8.0.0 和 GCC 9.1.0 似乎不同意这是否是有效代码。
struct Foo {
Foo([[maybe_unused]] int x) {}
};
int main() {}
Run Code Online (Sandbox Code Playgroud)
Clang 不产生警告(即使使用-Wall -Wextra -Wpedantic),但 GCC 产生此错误:
test.cpp:2:7: error: expected unqualified-id before '[' token
2 | Foo([[maybe_unused]] int x) {}
| ^
test.cpp:2:7: error: expected ')' before '[' token
2 | Foo([[maybe_unused]] int x) {}
| ~^
| )
Run Code Online (Sandbox Code Playgroud)
那么哪个编译器有错误?
是的,它们可以应用。标准允许这样做。
10.6.6 可能未使用的属性[dcl.attr.unused]
...
2该属性可以应用于类的声明、类型定义名称、变量、非静态数据成员、函数、枚举、或枚举器。
所以 Clang 在这里是正确的,这是一个 GCC 错误。已经为此提交了一个错误报告,标题为:maybe_unused 属性在用于构造函数的第一个参数时会触发语法错误
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |