https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87951
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> --- No. They're not "less strict", but they have a fixed underlying type. For any enumeration type with a fixed underlying type (whether "enum class" or just "enum") the validvalues of the type are all the valid values of the underlying type. So: enum E : unsigned char { e1, e2 }; enum class F : unsigned char { f1, f2 }; Both of these types can have any value from 0-255, so a switch statement that only handles the e1/e2 or or f1/f2 is incorrect. I wish people would just learn how enums work, it's not that complicated.