Visual C++ 2005は列挙体での基底型(underlying type)の指定ができるようです。ほんの少しのC++11対応ですね。こんなコードが期待通りに動きました。
#include <iostream> enum Hoge : unsigned short { A, }; enum Piyo : long long { B, }; int main() { std::cout << sizeof (Hoge) << std::endl; // 2 std::cout << sizeof (Piyo) << std::endl; // 8 } |
ただし、std::underlying_typeメタ関数がないので、これら列挙体から元の整数型を知るスベはないです。
警告レベル4だと、警告C4480が出ます。コンパイルオプションでこれは非表示にしてしまいましょう、C++11でも通用するコードですから。
おそらくはC++/CLIの影響ではないかと思います。C++/CLIにはenum classも存在するので、それもネイティブC++で使えたらなお良かったですね。
スポンサード リンク |