https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102774
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- For Barry's example clang prints: g.C:5:8: error: use of undeclared identifier 'B'; did you mean 'A::B'? void f(B::X x, int j) { ^ A::B g.C:1:14: note: 'A::B' declared here namespace A::B { ^ 1 error generated. This is much better. Ideal even.