https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86600
Bug ID: 86600 Summary: Class declaration in the same declarative region as using declaration - Missing diagnostic message Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: zhonghao at pku dot org.cn Target Milestone: --- The following program should give a diagnostic message when trying to compile it. namespace X { class A; } namespace Y { using X::A; class A {}; } int main() {} This is because it violates [basic.scope.declarative]/4 in the c++ standard: http://eel.is/c++draft/basic.scope.declarative#4 The diagnostic message is missing. MSVS gives a diagnostic message for this program, but clang does not. Stack overflow post confirming the bug: http://stackoverflow.com/questions/31220154/class-declaration-in-same-scope-as-using-declaration-compiles-in-gcc-but-not-msv clang++ also gives an error message: code0.cpp:3:27: error: declaration conflicts with target of using declaration already in scope namespace Y { using X::A; class A {}; } ^ code0.c.cpp:1:21: note: target of using declaration namespace X { class A; } ^ code0.c.cpp:3:24: note: using declaration namespace Y { using X::A; class A {}; } ^ 1 error generated.