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.

Reply via email to