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);
}
  • [Bug c++/110006] New: frie... services+gccbugs at vasama dot org via Gcc-bugs

Reply via email to