Новый стандарт добавит новый тип сильного перечисления, но синтаксис будет немного отличаться, и перечисления старого стиля будут совместимы (допустимый код в C ++ 03 будет действительным кодом C ++ 0x), поэтому не нужно ничего делать, чтобы сохранить действующий код действительным (не typedef и не все остальное).
enum class E { e1, e2 }; // new syntax, use E::e1
enum E2 { e1, e2 }; // old syntax, use e1 or E2::e1 (extension)
Здесь есть C ++ FAQ здесь , который решает эту конкретную проблему.