这是(枚举:char {})是一个gcc错误吗?
Is this (enum : char {}) a gcc bug?
在 gcc-4.5 下,它打印 0,在 gcc-4.6 下,它打印 1。
#include <iostream>
enum VenueId: char {};
int
main (int argc, char ** argv)
{
VenueId v = (VenueId)'P';
std::cout << (v=='P') << std::endl;
return 0;
}
按照标准, VenuedId
具有char
类型作为底层类型,因此v
应该包含字符'P'
,v == 'P'
应该产生 true。
§ 7.2 枚举声明
每个枚举定义一个不同于所有其他类型的类型。每个枚举还有一个基础类型。可以使用枚举基显式指定基础类型;如果未显式指定,则作用域枚举类型的基础类型为 int。在这些情况下,基础类型称为固定类型。在数字说明符的右大括号之后,每个枚举器都有其枚举的类型。
相关文章:
- 给定一个源文件,有没有办法要求 gcc 返回仅直接包含的头文件的列表?
- 使用具有默认参数的函数模板进行 decltype 会使结果混乱(一个有趣的问题或 gcc 的错误)
- 使用声明:GCC 和 Clang 的另一个错误?
- 相对于继承的构造函数,gcc 编译器是否还有一个错误?
- 从源代码安装 gcc: bash: gcc -v /usr/bin/gcc: 是一个目录
- 为什么 std::map emplace 需要在 gcc 上有一个复制构造函数
- Visual C++ 和 gcc 之间从 std::isblank 返回不一致.哪一个错了
- GCC 9.1 返回 void& 作为显式析构函数调用的结果类型。这是一个错误吗?
- 为什么 GCC 认为模板参数是 int 而它是一个完全不同的类型?
- GCC 编译器一个字节中有多少位
- Linux/GCC:是否有一种方法可以检查构建是否与其他机器上的前一个机器相同
- 用"gcc -c"通关很好地编译一个C++程序。为什么?
- 为什么它是一个使用GCC的令人震惊的函数调用?模板扣减失败
- 为什么gcc和clang允许我构造一个抽象类
- 给出一个方法作为回调函数(gcc 4.7.1)
- 这是(枚举:char {})是一个gcc错误吗?
- 复制构造函数与pch中的const成员函数冲突?一个gcc错误
- Qt Creator使用位于另一个地方的另一个GCC版本
- 这是一个gcc优化错误吗?
- make SCons在一个gcc行中编译所有内容