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

            Bug ID: 107324
           Summary: Defaulted operator== with a dependent return type is
                    rejected
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: de34 at live dot cn
  Target Milestone: ---

This code snippet is rejected by gcc even before instantiation (Godbolt link:
https://godbolt.org/z/zK6hWTabc).

template<class B>
struct Foo {
    friend B operator==(Foo, Foo) = default;
};

I think Foo<bool> should compile according to [class.eq]/1, and sometimes the
validness of the `= default;` part should not be checked before instantiation.

On the other hand, defaulted operator<=> is correctly handled
(https://godbolt.org/z/Tffs4M4sj).

Reply via email to