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

            Bug ID: 108303
           Summary: lookup failes with requires clause on non-template
                    friend function of a class template
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ted at lyncon dot se
  Target Milestone: ---

This works up to 12.2 (inclusive) on godbolt but fails on trunk:
```
template <typename Derived>
struct base {
    friend void foo(const Derived& d)
        requires requires { bar(d); } // removing this makes it work
    {
        bar(d);
    }
};

namespace adl {
struct S : base<S> {
    friend void bar(const S&) {}
};
}  // namespace adl

void test(adl::S const& s) {
    foo(s);  // error: 'foo' was not declared in this scope
}
```

Reply via email to