C++0xで導入されるenum classは、C++03までのenumよりも型付けが
強くなっているのでint型への暗黙の型変換はできなくなっています。
enum class Color { Blue = 0, Yello, Red }; int color = Color::Red; // エラー!Colorからintへ変換できません
明示的な型変換ならいけるかな、と思ったのでenum classを実装しているGCC 4.4で試してみました。
int color = static_cast<int>(Color::Red); // OK : colorは2
明示的な型変換はできるみたいです。
intからenum classへの変換も、明示的な型変換をすればいけます。
void foo(Color color) {} foo(2); // エラー!第1引数をintからColorへ変換できません foo(static_cast<Color>(2)); // OK
intとenumは相互変換することがけっこうあり、enum classも同様のことができるようなので
enum classは完全にBetter enumとして使用できそうです。