枚举的基础类型(以及因此大小)
如果没有为未范围的枚举类型显式指定基础类型,则以实现定义的方式确定。
enum E {
RED,
GREEN,
BLUE,
};
using T = std::underlying_type<E>::type; // implementation-defined
但是,标准确实要求枚举的基础类型不大于 int
,除非 int
和 unsigned int
都不能表示枚举的所有值。因此,在上面的代码中,T
可能是 int
,unsigned int
或 short
,但不是 long long
,举几个例子。
请注意,枚举具有与其基础类型相同的大小(由 sizeof
返回)。