https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101524
Bug ID: 101524 Summary: Improve diagnostic for incorrect definition of namespace alias Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: diagnostic Severity: enhancement Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- This is an incorrect attempt to define a namespace alias: namespace x { namespace y { } } using z = x::y; GCC correctly says: alias.C:2:14: error: ‘y’ in namespace ‘x’ does not name a type 2 | using z = x::y; | ^ alias.C:1:25: note: ‘x::y’ declared here 1 | namespace x { namespace y { } } | ^ It might be nice in this case (where a using-declaration names a namespace, not a type) to offer a fix-it to make it a namespace alias: note: did you mean to define a namespace alias? 2 | using z = x::y; | ^~~~~ | namespace The suggestion won't always be correct, maybe the user meant to define a typedef for a type x::Y or x::yo and the x::y was a typo. And given how rarely namespace aliases are used, maybe that's more likely. But maybe it's worth doing.