diff options
author | Thomas Anderson <thomasanderson@google.com> | 2019-04-19 00:52:54 +0000 |
---|---|---|
committer | Thomas Anderson <thomasanderson@google.com> | 2019-04-19 00:52:54 +0000 |
commit | 6ab51de08e7c6b1dae8875bd5fb70354100e1116 (patch) | |
tree | e283e0b479ca1a1d74d62322950e61bcbb23e10b /libcxx | |
parent | 5377748d54632760712bc1911ccf36bfc618efdf (diff) | |
download | bcm5719-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/algorithm | 1 | ||||
-rw-r--r-- | libcxx/test/libcxx/algorithms/debug_less.pass.cpp | 13 |
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; } |