https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105099

            Bug ID: 105099
           Summary: In lookup for namespace name qualifiers only
                    namespaces should be considered
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vanyacpp at gmail dot com
  Target Milestone: ---

Consider this code:

namespace a
{
    namespace c
    {}

    struct a
    {};

    namespace b = a::c;   // (1)
    using namespace a::c; // (2)
}

Currently GCC prints an error:

file.cpp:9:22: error: 'c' is not a namespace-name
    9 |     namespace b = a::c;
      |                      ^
file.cpp:10:24: error: 'c' is not a namespace-name
   10 |     using namespace a::c;
      |                        ^

If I interpret the standard correctly the code should compile without errors
because during the lookup of the qualifier the struct "a" should be ignored and
the namespace "a" should be found.

[basic.lookup.udir]p1: In a using-directive or namespace-alias-definition,
during the lookup for a namespace-name or for a name in a nested-name-specifier
only namespace names are considered.

https://eel.is/c++draft/basic.lookup.udir
https://godbolt.org/z/vaWjx4cKj

Reply via email to