diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-09-02 21:17:18 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2024-01-07 17:46:17 +0000 | 
| commit | fe013be447cd855ccaf6094a1d06aea570450629 (patch) | |
| tree | 9adc1e0a5d25b6280995832bb29d592fb80554a6 /contrib/llvm-project/libcxx/include/__algorithm/comp.h | |
| parent | 2f3b605b2e159522ecab77fd518e8139aaf581e9 (diff) | |
Diffstat (limited to 'contrib/llvm-project/libcxx/include/__algorithm/comp.h')
| -rw-r--r-- | contrib/llvm-project/libcxx/include/__algorithm/comp.h | 47 | 
1 files changed, 14 insertions, 33 deletions
| diff --git a/contrib/llvm-project/libcxx/include/__algorithm/comp.h b/contrib/llvm-project/libcxx/include/__algorithm/comp.h index af8eb7b5d76b..9474536615ff 100644 --- a/contrib/llvm-project/libcxx/include/__algorithm/comp.h +++ b/contrib/llvm-project/libcxx/include/__algorithm/comp.h @@ -10,6 +10,8 @@  #define _LIBCPP___ALGORITHM_COMP_H  #include <__config> +#include <__type_traits/integral_constant.h> +#include <__type_traits/predicate_traits.h>  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)  #  pragma GCC system_header @@ -24,41 +26,20 @@ struct __equal_to {    }  }; -template <class _T1, class _T2 = _T1> -struct __less -{ -    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} +template <class _Lhs, class _Rhs> +struct __is_trivial_equality_predicate<__equal_to, _Lhs, _Rhs> : true_type {}; -    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -    bool operator()(const _T1& __x, const _T2& __y) const {return __x < __y;} +// The definition is required because __less is part of the ABI, but it's empty +// because all comparisons should be transparent. +template <class _T1 = void, class _T2 = _T1> +struct __less {}; -    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -    bool operator()(const _T2& __x, const _T1& __y) const {return __x < __y;} - -    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -    bool operator()(const _T2& __x, const _T2& __y) const {return __x < __y;} -}; - -template <class _T1> -struct __less<_T1, _T1> -{ -    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} -}; - -template <class _T1> -struct __less<const _T1, _T1> -{ -    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} -}; - -template <class _T1> -struct __less<_T1, const _T1> -{ -    _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14 -    bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;} +template <> +struct __less<void, void> { +  template <class _Tp, class _Up> +  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _Tp& __lhs, const _Up& __rhs) const { +    return __lhs < __rhs; +  }  };  _LIBCPP_END_NAMESPACE_STD | 
