brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 38e2fb9 Raw
58 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef _LIBCPP___ALGORITHM_COMP_H10#define _LIBCPP___ALGORITHM_COMP_H11 12#include <__config>13#include <__type_traits/desugars_to.h>14#include <__type_traits/is_generic_transparent_comparator.h>15#include <__type_traits/is_integral.h>16 17#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)18#  pragma GCC system_header19#endif20 21_LIBCPP_BEGIN_NAMESPACE_STD22 23struct __equal_to {24  template <class _T1, class _T2>25  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _T1& __x, const _T2& __y) const {26    return __x == __y;27  }28};29 30template <class _Tp, class _Up>31inline const bool __desugars_to_v<__equal_tag, __equal_to, _Tp, _Up> = true;32 33// The definition is required because __less is part of the ABI, but it's empty34// because all comparisons should be transparent.35template <class _T1 = void, class _T2 = _T1>36struct __less {};37 38template <>39struct __less<void, void> {40  template <class _Tp, class _Up>41  _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool operator()(const _Tp& __lhs, const _Up& __rhs) const {42    return __lhs < __rhs;43  }44};45 46template <class _Tp>47inline const bool __desugars_to_v<__less_tag, __less<>, _Tp, _Tp> = true;48 49template <class _Tp>50inline const bool __desugars_to_v<__totally_ordered_less_tag, __less<>, _Tp, _Tp> = is_integral<_Tp>::value;51 52template <>53inline const bool __is_generic_transparent_comparator_v<__less<> > = true;54 55_LIBCPP_END_NAMESPACE_STD56 57#endif // _LIBCPP___ALGORITHM_COMP_H58