Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/libcxx/include/__algorithm/comp.h
35232 views
1
//===----------------------------------------------------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef _LIBCPP___ALGORITHM_COMP_H
10
#define _LIBCPP___ALGORITHM_COMP_H
11
12
#include <__config>
13
#include <__type_traits/desugars_to.h>
14
15
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
16
# pragma GCC system_header
17
#endif
18
19
_LIBCPP_BEGIN_NAMESPACE_STD
20
21
struct __equal_to {
22
template <class _T1, class _T2>
23
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _T1& __x, const _T2& __y) const {
24
return __x == __y;
25
}
26
};
27
28
template <class _Tp, class _Up>
29
inline const bool __desugars_to_v<__equal_tag, __equal_to, _Tp, _Up> = true;
30
31
// The definition is required because __less is part of the ABI, but it's empty
32
// because all comparisons should be transparent.
33
template <class _T1 = void, class _T2 = _T1>
34
struct __less {};
35
36
template <>
37
struct __less<void, void> {
38
template <class _Tp, class _Up>
39
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _Tp& __lhs, const _Up& __rhs) const {
40
return __lhs < __rhs;
41
}
42
};
43
44
template <class _Tp>
45
inline const bool __desugars_to_v<__less_tag, __less<>, _Tp, _Tp> = true;
46
47
_LIBCPP_END_NAMESPACE_STD
48
49
#endif // _LIBCPP___ALGORITHM_COMP_H
50
51