https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96500
Bug ID: 96500 Summary: enum of underlying type bool do not Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: fw at gcc dot gnu.org Target Milestone: --- I believe this needs to be accepted: enum E : bool { One, Two, Three }; See <http://eel.is/c++draft/dcl.enum#5>, “If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the constant-expression in the enumerator-definition shall be a converted constant expression of the underlying type.”. Converted constant expressions include integral conversions. Conversion from int to bool is not a narrowing conversion. So Three should have the value true, just like Two.