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

            Bug ID: 112455
           Summary: befriending a lambda closure type doesn't grant access
                    to the lambda body
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: richard-gccbugzilla at metafoo dot co.uk
  Target Milestone: ---

Testcase:


class C;

auto x = []<typename MyC = C>(MyC *p) {
    return p->n;
};

class C {
    int n;
    friend decltype(x);
} c;

int k = x(&c);


This appears to be valid, and Clang, MSVC, and EDG accept, but GCC reports an
access error. The templated operator() of the lambda is a member function of a
friend of C, so should have access to C::n.
  • [Bug c++/112455] New... richard-gccbugzilla at metafoo dot co.uk via Gcc-bugs

Reply via email to