https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95875
Bug ID: 95875 Summary: Misleading error message "invalid use of incomplete type" Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: haoxintu at gmail dot com CC: mpolacek at gcc dot gnu.org Target Milestone: --- $cat bug.cc class A: public A, A, A {} g_class; $g++ -c bug.cc bug.cc:5:1: error: invalid use of incomplete type ‘class A’ 5 | A | ^ bug.cc:1:7: note: forward declaration of ‘class A’ 1 | class A: | ^ bug.cc:5:1: error: invalid use of incomplete type ‘class A’ 5 | A | ^ bug.cc:1:7: note: forward declaration of ‘class A’ 1 | class A: | ^ bug.cc:5:1: error: invalid use of incomplete type ‘class A’ 5 | A | ^ bug.cc:1:7: note: forward declaration of ‘class A’ 1 | class A: | ^ While in clang $clang++ -c bug.cc bug.cc:3:1: error: base class has incomplete type A, ^ bug.cc:1:7: note: definition of 'A' is not complete until the closing '}' class A: ^ 1 error generated. I doubt that how GCC deals with this case. I guess there might be two situations: 1. GCC gives the wrong line number. 2. GCC just emits the duplicated messages. I guess GCC might have the second issue. I have tested in almost all GCC versions, and they all have this issue.