At one point I had looked at implementing a class/template in C++ that would support an Enum that would behave like it does in Ada. It has been some time since I thought abo
There isn't an easy way to do that in C++, not least because the enumeration constants are not required to be unique or contiguous. The conversion from value to string is also non-trivial; the solutions I know of involve C/C++ Preprocessor hackery - and that is a pejorative use of the term hackery.
I'm tempted to say "No"; I'm not certain that's correct, but it most certainly is non-trivial.
One of my colleagues has implemented a tool to generate classes that do most (if not all) of what you want:
http://code.google.com/p/enumgen/
The current implementation is in Lisp, but do not hold that against him :-)