https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102898

            Bug ID: 102898
           Summary: declaration of 'using Foo = enum class Foo' changes
                    meaning of 'Foo'
           Product: gcc
           Version: 11.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: roehling at debian dot org
  Target Milestone: ---

The following C++ code fails to compile:

    enum class Foo { foo };

    class Bar
    {
        using Foo = Foo;
    };

The generated error is

    <source>:5:11: error: declaration of 'using Foo = enum class Foo' changes
meaning of 'Foo' [-fpermissive]
        5 |     using Foo = Foo;
          |           ^~~
    <source>:1:12: note: 'Foo' declared here as 'enum class Foo'
        1 | enum class Foo { foo };
          |            ^~~


The code does compile with

    using Baz = Foo;

or

    using Foo = enum Foo;

Reply via email to