[Bug c++/95641] New: Bogus error message in the class base specifier

haoxintu at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Jun 11 15:26:06 GMT 2020


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

            Bug ID: 95641
           Summary: Bogus error message in the class base specifier
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: haoxintu at gmail dot com
  Target Milestone: ---

This code bug.cc

class A {};
class B : virtual class A{};

In gcc-trunk

$g++ -c bug.cc
bug.cc:2:19: error: expected class-name before ‘class’
    2 | class B : virtual class A{};
      |                   ^~~~~
bug.cc:2:19: error: expected ‘{’ before ‘class’
bug.cc:2:25: error: redefinition of ‘class A’
    2 | class B : virtual class A{};
      |                         ^
bug.cc:1:7: note: previous definition of ‘class A’
    1 | class A {};
      |       ^
bug.cc:2:1: error: multiple types in one declaration
    2 | class B : virtual class A{};
      | ^~~~~

There are four error messages, I guess some of them are bogus.

I tested bug.cc in other compilers, and they only give one message.

In clang : "error: expected class name",
In icc : "error: expected an identifier",
In msvc : " error C2518: keyword 'class' is invalid in a base class list;
expected a class name".

Reproduced in Godbolt : https://godbolt.org/z/KuEPNF


More information about the Gcc-bugs mailing list