<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/101160>101160</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Defaulting comparison operator with explicit object parameter
</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>
The following two defaulted equality comparison operators with explicit object parameter
```
struct A {
// #1 valid but rejected in Clang
//bool operator ==(this A, A) = default;
// #2 invalid but accepted in Clang
bool operator ==(this const A, const A &) = default;
};
```
are processed incorrectly by Clang. 1 is valid but rejected in Clang. 2 is invalid but accepted in Clang. Online demo: https://gcc.godbolt.org/z/MxMnK187c
Related discussion: https://stackoverflow.com/q/78808689/7325599
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEU81u2zgQfhrqMohADfV70MGJocsiWGCxL0CRY4m7tKiQlB336QvabtOmaQoQ0ojizPdDfDIEMy1EPaseWbXP5BZn5_uBtM9Gpy_9vzPBwVnrzmaZIJ4daDrIzUbSQC-btCZeQLnjKr0JbgG3kpfR-QBnE2eg19UaZSK48T9SEVbp5ZEiecb3jO9Yze_r-hmi31SEHbDmEW5bAAAMB4YDMBQFnKQ1GsYtgqc0kTSYBZ6sXKb3DaNz9jsfYGKfFrZxNgF2DJ_So0v73yQx8Xin9QE0glnewKVStH4M_hmsckuIN_B7CQzr39Jo9m_1z05JT7B6pyiEKwnlvCcV7QXGy41QDgWY8JlfOWA68amsHP5erFkINB0dEzuYY1wDE7ubMZNS-eT06GzMnZ8YDl8YDs-vz8tfRduoH938h6xMk7UJagvBuOXXcSFK9b87kT9Yd86VOzIcXhgOTdvytm67VAqsqq7LdC90JzqZUV80iEIIXjbZ3NfqIJpDUyKnpuioLVtR1HIsCllWWLVjZnrkWPJGcN5VvGxyLQ-tFm1VC16XWoys5HSUxubWno5JVWZC2KgveFHUPLNyJBuueUFc6AzXvwwxxcf3qelh3KbASm5NiOFtTDTRUr-_XXJK0wex-UNqss3b_t0VmDhv492shHV_PazepWaGw5VhYDjcJZx6_BoAAP__BRs8zQ">