24#if defined __cpp_lib_integer_comparison_functions
35template <
typename T1,
typename T2>
constexpr bool cmp_equal(T1 value1, T2 value2)
noexcept
38 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>)
42 else if constexpr (std::is_signed_v<T1>)
52template <
typename T1,
typename T2>
constexpr bool cmp_not_equal(T1 value1, T2 value2)
noexcept
57template <
typename T1,
typename T2>
constexpr bool cmp_less(T1 value1, T2 value2)
noexcept
59 if constexpr (std::is_signed_v<T1> == std::is_signed_v<T2>)
63 else if constexpr (std::is_signed_v<T1>)
73template <
typename T1,
typename T2>
constexpr bool cmp_greater(T1 value1, T2 value2)
noexcept
78template <
typename T1,
typename T2>
constexpr bool cmp_less_equal(T1 value1, T2 value2)
noexcept
83template <
typename T1,
typename T2>
constexpr bool cmp_greater_equal(T1 value1, T2 value2)
noexcept
93 explicit constexpr IntCmp(T theValue)
constexpr bool operator>(IntCmp< T1 > value1, IntCmp< T2 > value2)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
constexpr bool operator>=(IntCmp< T1 > value1, IntCmp< T2 > value2)
constexpr bool cmp_equal(T1 value1, T2 value2) noexcept
bool operator==(const cow_wrapper< T, P > &a, const cow_wrapper< T, P > &b)
constexpr bool cmp_greater_equal(T1 value1, T2 value2) noexcept
constexpr bool cmp_greater(T1 value1, T2 value2) noexcept
bool operator<(const cow_wrapper< A, P > &a, const cow_wrapper< B, P > &b)
constexpr bool cmp_less_equal(T1 value1, T2 value2) noexcept
constexpr bool operator<=(IntCmp< T1 > value1, IntCmp< T2 > value2)
bool operator!=(const cow_wrapper< T, P > &a, const cow_wrapper< T, P > &b)
constexpr bool cmp_less(T1 value1, T2 value2) noexcept
constexpr bool cmp_not_equal(T1 value1, T2 value2) noexcept
constexpr IntCmp(T theValue)