枚举的基础类型(以及因此大小)

如果没有为未范围的枚举类型显式指定基础类型,则以实现定义的方式确定。

enum E {
    RED,
    GREEN,
    BLUE,
};
using T = std::underlying_type<E>::type; // implementation-defined

但是,标准确实要求枚举的基础类型不大于 int,除非 intunsigned int 都不能表示枚举的所有值。因此,在上面的代码中,T 可能是 intunsigned intshort,但不是 long long,举几个例子。

请注意,枚举具有与其基础类型相同的大小(由 sizeof 返回)。