这是(枚举:char {})gcc bug吗?

poo*_*per 6 c++ enums gcc c++11

在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;
}
Run Code Online (Sandbox Code Playgroud)

bil*_*llz 5

按照标准,VenuedId具有char类型作为基本类型,因此v应该包含炭'P',v == 'P'应产生.

§7.2枚举声明

每个枚举定义一个与所有其他类型不同的类型.每个枚举也有一个基础类型.可以使用enum-base明确指定基础类型 ; 如果未明确指定,则作用域枚举类型的基础类型为int.在这些情况下,据说基础类型是固定的.在num-specifier的右括号之后,每个枚举器都具有其枚举的类型.