https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110006
Bug ID: 110006 Summary: friend function template with NTTP and constraint doesn't match existing declaration Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: services+gccbugs at vasama dot org Target Milestone: --- // https://godbolt.org/z/jWo6ve9fh template<typename T> class s; template<typename T> void constraint(s<T> const&, int&); template<typename U, typename T2> U function(s<T2> const x) requires requires (U& u) { constraint(x, u); } { return {}; } template<typename T> class s { template<typename U, typename T2> friend U function(s<T2> const x) requires requires (U& u) { constraint(x, u); }; }; int f(s<int> q) { // error: call of overloaded 'function<int>(s<int>&)' is ambiguous return function<int>(q); }