Hello everyone,
is it possible to test an enum for each value just appearing once. Example:
enum foo { BAR = 0, BAZ = 0 };
Is it possible to create an error or warning with this?
Thanks for your answers Alexander
Just as there should be compiler flags to warn if any integer gets the value 123456?
If you want non-overlapping enumeration values, the natural way is to write:
enum { Ben, John, Charlie, }
or with an initial start value:
enum { Red = 1, Green, Blue };
If you on the other hand decides to explicitly assign a numeric value to multiple entries, then it's 100% your task to decide what values to assign. And consider the implications of the selected numerical values.
The language do not care about overlapping numerical values, just as preprocessor-based code:
#define VOLTAGE 1 #define CURRENT 2 #define TEMPERATURE 3
wouldn't care if two #define expands to the same numerical value.
If you have a problem with overlapping numerical values, then the obvious choice is to stop assign explicit values and let the compiler auto-enumerate.