http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55776
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Manuel López-Ibáñez from comment #3) > But the global foo is a type while myenum::foo is not a type. Is there any > context where they can be used interchangeably? > > enum class myenum > { > bar = int > }; > > doesn't make sense. How about this: typedef int foo; enum class myenum { foo = 1, bar = (foo)+1 }; What is the value of myenum::bar? Is it clear and unambiguous, or should there be a warning?