Fed*_*dor 4 c++ constants unions language-lawyer c++11
在以下示例中,匿名union声明 member int i,该成员被注入到封闭范围中,并const位于 union 声明之前:
int main() {
const union {
int i = 0;
};
i = 1;
}
Run Code Online (Sandbox Code Playgroud)
编译器在处理该程序时存在分歧。
MSVC 接受联合声明,但拒绝i = 1并出现错误:
错误 C3892:“$S1”:无法分配给 const 变量
GCC 接受整个程序而不发出任何警告,只是忽略const前缀。
Clang 在-pedantic-errors模式下发出错误:
匿名联合不能是“const”[-Werror,-Wpedantic]
这里哪个编译器是正确的?
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |