[libc++] Make __debug_less::operator() constexpr
This is a followup to [1] which added a new `__debug_less::operator()` overload.
[2] added `_LIBCPP_CONSTEXPR_AFTER_CXX17` to the original
`__debug_less::operator()` between the time of writing [1] and landing it. This
change adds `_LIBCPP_CONSTEXPR_AFTER_CXX17` to the new overload too.
[1] https://reviews.llvm.org/rL358423
[2] https://reviews.llvm.org/rL358252
Differential Revision: https://reviews.llvm.org/D60724
llvm-svn: 358725
diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
index 244ae2d..326e566 100644
--- a/libcxx/include/algorithm
+++ b/libcxx/include/algorithm
@@ -785,6 +785,7 @@
__debug_less(_Compare& __c) : __comp_(__c) {}
template <class _Tp, class _Up>
+ _LIBCPP_CONSTEXPR_AFTER_CXX17
bool operator()(const _Tp& __x, const _Up& __y)
{
bool __r = __comp_(__x, __y);
diff --git a/libcxx/test/libcxx/algorithms/debug_less.pass.cpp b/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
index 260900b..5d1b575 100644
--- a/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
@@ -268,6 +268,16 @@
assert(dl(static_cast<int&&>(1), static_cast<const int&&>(2)));
}
+#if TEST_STD_VER > 17
+constexpr bool test_constexpr() {
+ std::less<> cmp{};
+ __debug_less<std::less<> > dcmp(cmp);
+ assert(dcmp(1, 2));
+ assert(!dcmp(1, 1));
+ return true;
+}
+#endif
+
int main(int, char**) {
test_passing();
test_failing();
@@ -275,5 +285,8 @@
test_non_const_arg_cmp();
test_value_iterator();
test_value_categories();
+#if TEST_STD_VER > 17
+ static_assert(test_constexpr(), "");
+#endif
return 0;
}