Enums in C++ have one major problem: You can\'t have one name in two different enums like this:
enum Browser { None = 0, Chrome = 1, Firefox = 2
You can use enum class (scoped enums) which is supported in C++11 on up. It is strongly typed and indicates that each enum type is different.
enum class
enum
Browser::None != OS::None enum class Browser { None = 0, Chrome = 1, Firefox = 2 } enum class OS { None = 0, XP = 1, Windows7 = 2 }