我有很大的老式enum
不是C++ 11強類型枚舉, 我要重複,雖然它的值,如:C++足夠大的整數,枚舉
enum Enum {
enBEGIN = 0,
eFirst,
eSecond,
//many lines
enEND
};
Enum val;
for (auto i = make_big_enough_integer<Enum>(val); i != enEND; ++i)
;
的問題是如何實現make_big_enough_integer
以最簡單的方式?
make_big_enough_integer
應該返回val
轉換爲整數int32_t
類型,uint32_t
或uint64_t
所以可以處理在enum
所有值。
注1:轉換爲強類型的枚舉不是一個選項,因爲它被用於太多的程序地址, ,並且無法想象正則表達式可以代替所有的出現。
注2:我可以循環之前插入,像 這static_cast(sizeof(Enum) <= sizeof(int), "error");
或只使用uint64_t
,但我有趣的寫汽車採用以平臺的代碼。
您是否在尋找'的std :: underlying_type'? –