<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/102588>102588</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            default equality operator== const selects not-const conversion operator
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Fedr
      </td>
    </tr>
</table>

<pre>
    This program
```
struct A {
    int i = 0;
    constexpr operator int() const { return i; }
    constexpr operator int&() { return ++i; }
};

struct B : A {
    bool operator==(const B &) const = default;
};

constexpr bool f() {
 B x;
    return x == x;
}

static_assert( f() ); // fails in Clang
```
is accepted by GCC and MSVC, but fails static assertion in Clang. Online demo: https://gcc.godbolt.org/z/5hYob3K66

Clang looks wrong here, because not-const `operator int&` should not be called from within `B::operator==(const B &) const`.

Related discussion: https://stackoverflow.com/q/78850335/7325599
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVE-P2ygU_zT48jQRBtuxDz7EibyH1Wql3apSTxXGLzYdAhnAyUw_fYXjJplMpVayFAK8378HCO_VYBBrkjck3yViCqN1dYu9Szrbv9WfRuXh6OzgxIHQHaEbUtDlm__64CYZYANk3VxmAACUCaCA8B1Qwu_mpTU-4OvRgT2iE8G6uJWwkrDqshhxwGGYnAFFeANkvft9fbFA3BUT1hDWvIeIg59y3slvgPDNo4nOWn3lIXwXP1ZeVDYwk15F8x30uBeTDjeCD2Q39TP0_iZ6IW3g9V1ci5VXuLDfrd4sLTZEUPKr8B5djPOGzao5AdYS1sJeKO1BGdhqYYZf9lN5EFLiMWAP3Rv8td2CMD388__nLWFb6KawoFwo4UKprLnCruBfo5VB6PFgY6xjCEdP-OYiYpByNdi-szqsrBsIa78T1ubjF9vxv4vi3tUMB9raZw9nZ80AIzqcZaAUk0cwNjwtHSjo45EoKPjRTrqP26BDkEJr7GHv7AHOKozKxLImSuObP2o0KejqXuF_qEVMqldeTt4raz4a9kHIZ3tCt9f2vJL2QFj7Qli7Lsuccp7HIWd5XlVJX_O-4pVIsE7XjKdVlpZZMtYFE1mepj2rRFUVKZN7VrJ9iVlB87TsskTVjLKMlrSiFeU0W63XBVZSClFy3hdyTTKKB6H0SuvTIeaeKO8nrFPK8rJMtOhQ-_kVYMzgGeZVwlh8FFwdi566afAko1r54G8wQQWN9XL2AV8moVV4e7g2yy3xqFEGf9c1ac0JXcztWpFMTtcPR0aFceqW6CLz8vN0dPYbykBYO-v1hLWLoVPNfgQAAP__Uod0BA">