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

            Bug ID: 71882
           Summary: elaborated-type-specifier friend not looked up in
                    unnamed namespace
           Product: gcc
           Version: 6.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sbergman at redhat dot com
  Target Milestone: ---

At least with both GCC 6.1.1 and recent trunk, compiling

  namespace { struct S; }
  class C {
    friend struct S;
    static void f();
  };
  namespace { struct S { void f() { C::f(); } }; }

fails with

> $ g++ -c test.cc
> test.cc: In member function ‘void {anonymous}::S::f()’:
> test.cc:6:42: error: ‘static void C::f()’ is private within this context
>    namespace { struct S { void f() { C::f(); } }; }
>                                           ^
> test.cc:4:17: note: declared private here
>      static void f();
>                  ^

Reply via email to