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

时间:2013-10-17 10:01:17

标签: c++ gcc c++11 enums

在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;
}

1 个答案:

答案 0 :(得分:5)

根据标准, VenuedIdchar类型作为基础类型,因此v应包含char 'P'v == 'P'应该产生 true

§7.2枚举声明

  

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