<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64971>64971</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
libc++: reverse_iterator operator== won't compile.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
huihzhang
</td>
</tr>
</table>
<pre>
Failure triggered by https://reviews.llvm.org/D149543
Reduced test case
```c++
#include <vector>
std::vector<bool> vec(3, true);
#define RI std::reverse_iterator<std::vector<bool>::iterator>
class D : public RI {
public:
RI::iterator_type getCurrent() { return current; }
D(bool a=true) {
if (a)
current = vec.begin();
else
current = vec.end();
}
};
int test() {
D x(true);
D y(false);
return std::operator==<std::vector<bool>::iterator>(x, y);
}
```
Compiler explorer: https://godbolt.org/z/ahM1PnTYr
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVEtvqzwQ_TXDZtQIxiGBBYskFKmLT_pU3c1dVTwm4CsHI9ukTX_9lQN5Sl1cy0rAwzlz5uXSWtn2zBnEW4jzoBxdp03WjbL77sq-DSrdnLKilGo0jM7ItmXDDVYn7JwbLIgNUAFUGD5K_rQLpY6HhTYtUJFHyzReCghzCDfT7zs3Y80NOrYO69IyztZVOO0aaOv3dEpC9rUaG0YQuyPXThsQr_eE1jVegthcrLtKawXiFY9cAyUCaIfOjAyUgtjeQ4FEw3vZM76_4ZXH8JGN5Q_p2JQT448-ptPbl7OyWpXWYo4gNjiMlZK19wDr2ft05LHnV5zX-9sj3Yc7DYwtu91oDPcOKAFKPQ0adqPpsZ4NYouwzh_ZcqDEq8QSRD7Hf5OAT0vuESgpfY4m-0yNIHKfyEXFrewnBdcsPpOwsvwDnPvmB_BVuH94rI_s3blPboHfoDl-ASXPdZ0sJ6BkX3oxT6Y5bddy6uFSuPy8_6XQlHz5zjo9tNU1lks334ez04dBKjbIX4PSho1vj8cZanVTaeXm8fkGKsruv-j__tdvc88UNJloUpGWAWfRKqWUxDqioMsojmsS1TpdxctVwvsqYUFMTZIuw3XcVIHMKCQRJhSHoYgjWqSRiOuoWVWc8j7hFSxDPpRSXcc4kNaOnK2W6ToKVFmxsuergkjJ6jKsRP7qMJkHvVRja2EZKmnd7TYInHSKszuM2ODzqOFjQfBT90Brh_WUuUUwGpU9ZUy6bqwWtT4AFd7Z_PcyGP2HawdUnAOwQMU5hr8BAAD__-geaL8">