mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-20 13:23:43 +08:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@358725 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -785,6 +785,7 @@ struct __debug_less
|
|||||||
__debug_less(_Compare& __c) : __comp_(__c) {}
|
__debug_less(_Compare& __c) : __comp_(__c) {}
|
||||||
|
|
||||||
template <class _Tp, class _Up>
|
template <class _Tp, class _Up>
|
||||||
|
_LIBCPP_CONSTEXPR_AFTER_CXX17
|
||||||
bool operator()(const _Tp& __x, const _Up& __y)
|
bool operator()(const _Tp& __x, const _Up& __y)
|
||||||
{
|
{
|
||||||
bool __r = __comp_(__x, __y);
|
bool __r = __comp_(__x, __y);
|
||||||
|
@@ -268,6 +268,16 @@ void test_value_categories() {
|
|||||||
assert(dl(static_cast<int&&>(1), static_cast<const int&&>(2)));
|
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**) {
|
int main(int, char**) {
|
||||||
test_passing();
|
test_passing();
|
||||||
test_failing();
|
test_failing();
|
||||||
@@ -275,5 +285,8 @@ int main(int, char**) {
|
|||||||
test_non_const_arg_cmp();
|
test_non_const_arg_cmp();
|
||||||
test_value_iterator();
|
test_value_iterator();
|
||||||
test_value_categories();
|
test_value_categories();
|
||||||
|
#if TEST_STD_VER > 17
|
||||||
|
static_assert(test_constexpr(), "");
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user