列舉的基礎型別(以及因此大小)

如果沒有為未範圍的列舉型別顯式指定基礎型別,則以實現定義的方式確定。

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

但是,標準確實要求列舉的基礎型別不大於 int,除非 intunsigned int 都不能表示列舉的所有值。因此,在上面的程式碼中,T 可能是 intunsigned intshort,但不是 long long,舉幾個例子。

請注意,列舉具有與其基礎型別相同的大小(由 sizeof 返回)。