xref: /openbsd-src/gnu/llvm/libcxx/include/__algorithm/comp.h (revision 4bdff4bed0e3d54e55670334c7d0077db4170f86)
176d0caaeSpatrick //===----------------------------------------------------------------------===//
276d0caaeSpatrick //
376d0caaeSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
476d0caaeSpatrick // See https://llvm.org/LICENSE.txt for license information.
576d0caaeSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
676d0caaeSpatrick //
776d0caaeSpatrick //===----------------------------------------------------------------------===//
876d0caaeSpatrick 
976d0caaeSpatrick #ifndef _LIBCPP___ALGORITHM_COMP_H
1076d0caaeSpatrick #define _LIBCPP___ALGORITHM_COMP_H
1176d0caaeSpatrick 
1276d0caaeSpatrick #include <__config>
1376d0caaeSpatrick 
1476d0caaeSpatrick #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1576d0caaeSpatrick #  pragma GCC system_header
1676d0caaeSpatrick #endif
1776d0caaeSpatrick 
1876d0caaeSpatrick _LIBCPP_BEGIN_NAMESPACE_STD
1976d0caaeSpatrick 
20*4bdff4beSrobert struct __equal_to {
21*4bdff4beSrobert   template <class _T1, class _T2>
operator__equal_to22*4bdff4beSrobert   _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _T1& __x, const _T2& __y) const {
23*4bdff4beSrobert     return __x == __y;
24*4bdff4beSrobert   }
2576d0caaeSpatrick };
2676d0caaeSpatrick 
2776d0caaeSpatrick template <class _T1, class _T2 = _T1>
2876d0caaeSpatrick struct __less
2976d0caaeSpatrick {
30*4bdff4beSrobert     _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
operator__less3176d0caaeSpatrick     bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
3276d0caaeSpatrick 
33*4bdff4beSrobert     _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
operator__less3476d0caaeSpatrick     bool operator()(const _T1& __x, const _T2& __y) const {return __x < __y;}
3576d0caaeSpatrick 
36*4bdff4beSrobert     _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
operator__less3776d0caaeSpatrick     bool operator()(const _T2& __x, const _T1& __y) const {return __x < __y;}
3876d0caaeSpatrick 
39*4bdff4beSrobert     _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
operator__less4076d0caaeSpatrick     bool operator()(const _T2& __x, const _T2& __y) const {return __x < __y;}
4176d0caaeSpatrick };
4276d0caaeSpatrick 
4376d0caaeSpatrick template <class _T1>
4476d0caaeSpatrick struct __less<_T1, _T1>
4576d0caaeSpatrick {
46*4bdff4beSrobert     _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
4776d0caaeSpatrick     bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
4876d0caaeSpatrick };
4976d0caaeSpatrick 
5076d0caaeSpatrick template <class _T1>
5176d0caaeSpatrick struct __less<const _T1, _T1>
5276d0caaeSpatrick {
53*4bdff4beSrobert     _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
5476d0caaeSpatrick     bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
5576d0caaeSpatrick };
5676d0caaeSpatrick 
5776d0caaeSpatrick template <class _T1>
5876d0caaeSpatrick struct __less<_T1, const _T1>
5976d0caaeSpatrick {
60*4bdff4beSrobert     _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_SINCE_CXX14
6176d0caaeSpatrick     bool operator()(const _T1& __x, const _T1& __y) const {return __x < __y;}
6276d0caaeSpatrick };
6376d0caaeSpatrick 
6476d0caaeSpatrick _LIBCPP_END_NAMESPACE_STD
6576d0caaeSpatrick 
6676d0caaeSpatrick #endif // _LIBCPP___ALGORITHM_COMP_H
67