http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53479
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-05-24 20:21:57 UTC --- No, there's nothing wrong with the cast. A scoped enumeration type without an explicitly-specified underlying type has a fixed underlying type of int, so the values of the enumeration type are the values of int. Your switch doesn't handle all values, so control can flow off the end of the function, so the warning is correct.