TITLE: incrementing enums PROBLEM: Stephen Baynes [digit is an enum] : digit++; I think that this is something that has changed in the life of C++. This was originally allowed but modern compilers now reject it. This one cost me quite a bit of rewriting when I had to port some code from an older C++ compiler to a new one (and not the only thing). You can use : digit = (numbers) ( digit + 1 ); In my view if the standard prohibits the use of ++ and -- on enums (which is what now seems to be the case) then that is a bad decision by the standard makers. It is often necessary to itterate over a enumerated type. RESPONSE: maxtal@Physics.usyd.edu.au (John Max Skaller) Something _else_ changed to compensate, Stephen. enums are now also first class types -- you can overload on them. So you can write: template void operator++(T& t) { t = (T) (t+1); } // or variation thereof and suddenly all your enums++ work again.