https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97531
Bug ID: 97531 Summary: Improve type/non-type declaration diagnostic Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mpolacek at gcc dot gnu.org Target Milestone: --- For this: struct A { }; struct B { B(A); }; void fn () { B(A()); // extern struct B A (void); A a; } we issue: q.C: In function ‘void fn()’: q.C:8:4: error: expected ‘;’ before ‘a’ 8 | A a; | ^~ | ; Eh, what? clang++: q.C:8:3: error: must use 'struct' tag to refer to type 'A' in this scope A a; ^ struct q.C:7:5: note: struct 'A' is hidden by a non-type declaration of 'A' here B(A()); // extern struct B A (void); ^