这是(枚举:char {})是一个gcc错误吗?

Is this (enum : char {}) a gcc bug?

本文关键字:一个 gcc 错误 char 这是 枚举      更新时间:2023-10-16

在 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。在这些情况下,基础类型称为固定类型。在数字说明符的右大括号之后,每个枚举器都有其枚举的类型。