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#pragma GCC diagnostic push
50#pragma GCC diagnostic ignored "-Wc++23-extensions"
51 template<
typename _Tp>
53 static constexpr _Tp&&
54 operator()(_Tp&& __t)
noexcept
56#pragma GCC diagnostic pop
58 using is_transparent = __is_transparent;
61#ifdef __glibcxx_ranges
69 template<
typename _Tp,
typename _Up>
70 concept __less_builtin_ptr_cmp
71 =
requires (_Tp&& __t, _Up&& __u) { { __t < __u } -> same_as<bool>; }
72 && convertible_to<_Tp, const volatile void*>
73 && convertible_to<_Up, const volatile void*>
74 && (!
requires(_Tp&& __t, _Up&& __u)
76 && !
requires(_Tp&& __t, _Up&& __u)
85#pragma GCC diagnostic push
86#pragma GCC diagnostic ignored "-Wc++23-extensions"
90 template<
typename _Tp,
typename _Up>
91 requires equality_comparable_with<_Tp, _Up>
93 operator()(_Tp&& __t, _Up&& __u)
97 using is_transparent = __is_transparent;
103 template<
typename _Tp,
typename _Up>
104 requires equality_comparable_with<_Tp, _Up>
105 static constexpr bool
106 operator()(_Tp&& __t, _Up&& __u)
110 using is_transparent = __is_transparent;
116 template<
typename _Tp,
typename _Up>
117 requires totally_ordered_with<_Tp, _Up>
118 static constexpr bool
119 operator()(_Tp&& __t, _Up&& __u)
122 if constexpr (__detail::__less_builtin_ptr_cmp<_Tp, _Up>)
124 if (std::__is_constant_evaluated())
127 auto __x =
reinterpret_cast<__UINTPTR_TYPE__
>(
129 auto __y =
reinterpret_cast<__UINTPTR_TYPE__
>(
137 using is_transparent = __is_transparent;
143 template<
typename _Tp,
typename _Up>
144 requires totally_ordered_with<_Tp, _Up>
145 static constexpr bool
146 operator()(_Tp&& __t, _Up&& __u)
150 using is_transparent = __is_transparent;
156 template<
typename _Tp,
typename _Up>
157 requires totally_ordered_with<_Tp, _Up>
158 static constexpr bool
159 operator()(_Tp&& __t, _Up&& __u)
163 using is_transparent = __is_transparent;
169 template<
typename _Tp,
typename _Up>
170 requires totally_ordered_with<_Tp, _Up>
171 static constexpr bool
172 operator()(_Tp&& __t, _Up&& __u)
176 using is_transparent = __is_transparent;
178#pragma GCC diagnostic pop
182_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.