There are many STL algorithms (such as lexicographical_compare) that compare
values pointed to by iterators like so:
__comp(*it1, *it2);
When building with _LIBCPP_DEBUG=0, comparators are wrapped in __debug_less
which does some additional validation. But __debug_less::operator() takes
non-const references, so if the type of *it1 is int, not int&, then the build
will fail.
This change adds a const& overload for operator() to fix the build.
This change shouldn't be needed. We always call __do_compare_assert with an lvalue, so the additional const overloads aren't needed.