31#define _RANGES_CMP_H 1
33#if __cplusplus > 201703L
37namespace std _GLIBCXX_VISIBILITY(default)
39_GLIBCXX_BEGIN_NAMESPACE_VERSION
41 struct __is_transparent;
49 template<
typename _Tp>
52 operator()(_Tp&& __t)
const noexcept
55 using is_transparent = __is_transparent;
58#ifdef __glibcxx_ranges
66 template<
typename _Tp,
typename _Up>
67 concept __less_builtin_ptr_cmp
68 =
requires (_Tp&& __t, _Up&& __u) { { __t < __u } -> same_as<bool>; }
69 && convertible_to<_Tp, const volatile void*>
70 && convertible_to<_Up, const volatile void*>
71 && (!
requires(_Tp&& __t, _Up&& __u)
73 && !
requires(_Tp&& __t, _Up&& __u)
85 template<
typename _Tp,
typename _Up>
86 requires equality_comparable_with<_Tp, _Up>
88 operator()(_Tp&& __t, _Up&& __u)
const
92 using is_transparent = __is_transparent;
98 template<
typename _Tp,
typename _Up>
99 requires equality_comparable_with<_Tp, _Up>
101 operator()(_Tp&& __t, _Up&& __u)
const
105 using is_transparent = __is_transparent;
111 template<
typename _Tp,
typename _Up>
112 requires totally_ordered_with<_Tp, _Up>
114 operator()(_Tp&& __t, _Up&& __u)
const
117 if constexpr (__detail::__less_builtin_ptr_cmp<_Tp, _Up>)
119 if (std::__is_constant_evaluated())
122 auto __x =
reinterpret_cast<__UINTPTR_TYPE__
>(
124 auto __y =
reinterpret_cast<__UINTPTR_TYPE__
>(
132 using is_transparent = __is_transparent;
138 template<
typename _Tp,
typename _Up>
139 requires totally_ordered_with<_Tp, _Up>
141 operator()(_Tp&& __t, _Up&& __u)
const
145 using is_transparent = __is_transparent;
151 template<
typename _Tp,
typename _Up>
152 requires totally_ordered_with<_Tp, _Up>
154 operator()(_Tp&& __t, _Up&& __u)
const
158 using is_transparent = __is_transparent;
164 template<
typename _Tp,
typename _Up>
165 requires totally_ordered_with<_Tp, _Up>
167 operator()(_Tp&& __t, _Up&& __u)
const
171 using is_transparent = __is_transparent;
176_GLIBCXX_END_NAMESPACE_VERSION
auto declval() noexcept -> decltype(__declval< _Tp >(0))
constexpr _Tp && forward(typename std::remove_reference< _Tp >::type &__t) noexcept
Forward an lvalue.
ISO C++ entities toplevel namespace is std.
Implementation details not part of the namespace std interface.
[func.identity] The identity function.
ranges::equal_to function object type.
ranges::not_equal_to function object type.
ranges::less function object type.
ranges::greater function object type.
ranges::greater_equal function object type.
ranges::less_equal function object type.