creating flexible declarative enumerations on the fly in C++11