列舉的基礎型別(以及因此大小)
如果沒有為未範圍的列舉型別顯式指定基礎型別,則以實現定義的方式確定。
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
返回)。