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

            Bug ID: 100339
           Summary: Bogus "should have been declared inside" error with
                    friend
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mpolacek at gcc dot gnu.org
  Target Milestone: ---

template<typename T>
void fn (T);

class C {
  friend void ::fn(int);
  friend void ::fn<>(double);
  friend void ::fn<double *>(double *);
};

gives:

$ ./cc1plus -quiet q.C
q.C:5:23: error: ‘void fn(int)’ should have been declared inside ‘::’
    5 |   friend void ::fn(int);
      |                       ^

but ::fn(int) should refer to an instantiation of fn.

Started with r249385.

Reply via email to