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++で使えたらなお良かったですね。

スポンサード リンク

この記事のカテゴリ

  • ⇒ Visual C++ 2005は列挙体の基底型を指定できる
  • ⇒ Visual C++ 2005は列挙体の基底型を指定できる