summaryrefslogtreecommitdiffstats
path: root/libcxx
diff options
context:
space:
mode:
authorThomas Anderson <thomasanderson@google.com>2019-04-19 00:52:54 +0000
committerThomas Anderson <thomasanderson@google.com>2019-04-19 00:52:54 +0000
commit6ab51de08e7c6b1dae8875bd5fb70354100e1116 (patch)
treee283e0b479ca1a1d74d62322950e61bcbb23e10b /libcxx
parent5377748d54632760712bc1911ccf36bfc618efdf (diff)
downloadbcm5719-llvm-6ab51de08e7c6b1dae8875bd5fb70354100e1116.tar.gz
bcm5719-llvm-6ab51de08e7c6b1dae8875bd5fb70354100e1116.zip
[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
Diffstat (limited to 'libcxx')
-rw-r--r--libcxx/include/algorithm1
-rw-r--r--libcxx/test/libcxx/algorithms/debug_less.pass.cpp13
2 files changed, 14 insertions, 0 deletions
diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
index 244ae2d5b78..326e566fbf7 100644
--- a/libcxx/include/algorithm
+++ b/libcxx/include/algorithm
@@ -785,6 +785,7 @@ struct __debug_less
__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 260900b7d43..5d1b575b512 100644
--- a/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
+++ b/libcxx/test/libcxx/algorithms/debug_less.pass.cpp
@@ -268,6 +268,16 @@ void test_value_categories() {
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 @@ int main(int, char**) {
test_non_const_arg_cmp();
test_value_iterator();
test_value_categories();
+#if TEST_STD_VER > 17
+ static_assert(test_constexpr(), "");
+#endif
return 0;
}
OpenPOWER on IntegriCloud