|
|
1
1
看起来语言本身(至少从C++23开始)有一个bug,这使得Clang的行为在技术上是合法的(无论
现在,您定义了一个未作用域的枚举,全局作用域似乎确实“立即包含枚举指定者”。这是因为 enum-specifier 是整个枚举定义: enum-specifier:
enum-head { enumerator-listopt }
enum-head { enumerator-list , }
然而,我觉得这完全疯了。虽然我在C++核心工作组中找不到这方面的问题,但我不认为这是一种预期行为。 上 LLVM bug tracker ,Richard Smith(委员会成员和Clang维护者)似乎也同意所有编译器 但是 Clang做了明智的事情,Clang和语言本身都可能需要修改。 经过一番思考,这可能是C++11之前的遗留措辞。您不能转发一次声明枚举;只有具有固定底层类型的枚举才能被前向声明,而这只是C++11之后的情况。因此,在C++03中,您无法将定义与第一个声明分开,因此上述[dcl.enum]/12处的措辞就足够了。 |
|
Paul J. Lucas · _C中任意大小的原子结构体赋值? 1 年前 |
|
|
nore · 为什么C标准禁止在源文件末尾使用部分预处理令牌? 1 年前 |
|
Gene · 是否允许使用受约束的别名模板? 1 年前 |
|
|
yg-i · C的“基本执行字符集”中的字符总数究竟是多少? 1 年前 |