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
How about using scoped vs. unscoped enumeration? c++11 now offers scoped enumeration. An example would be:
enum class Browser : { }; enum class OS : { };
Access the enumerated types via an object of the Browser or an object of OS.