在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;
}
答案 0 :(得分:5)
根据标准, VenuedId
将char
类型作为基础类型,因此v
应包含char 'P'
,v == 'P'
应该产生 true 。
§7.2枚举声明
每个枚举定义一个与所有其他类型不同的类型。每个枚举也有一个基础类型。 可以使用enum-base 明确指定基础类型;如果未明确指定,则作用域枚举类型的基础类型为int。在这些情况下,据说基础类型是固定的。 在num-specifier的右括号后面,每个枚举器都有其枚举类型。