diff --git a/deps/ox/src/ox/std/utility.hpp b/deps/ox/src/ox/std/utility.hpp index 1c628e175..f1e553018 100644 --- a/deps/ox/src/ox/std/utility.hpp +++ b/deps/ox/src/ox/std/utility.hpp @@ -27,6 +27,48 @@ constexpr void swap(T &a, T &b) noexcept { b = std::move(temp); } +template +constexpr bool cmp_equal(T const t, U const u) noexcept { + if constexpr(ox::is_signed_v == ox::is_signed_v) { + return t == u; + } else if constexpr(ox::is_signed_v) { + return ox::Signed{t} == u; + } else { + return t == ox::Signed{u}; + } +} + +template +constexpr bool cmp_less(T const t, U const u) noexcept { + if constexpr(ox::is_signed_v == ox::is_signed_v) { + return t < u; + } else if constexpr(ox::is_signed_v) { + return ox::Signed{t} < u; + } else { + return t < ox::Signed{u}; + } +} + +template +constexpr bool cmp_not_equal(T const t, U const u) noexcept { + return !std::cmp_equal(t, u); +} + +template +constexpr bool cmp_greater(T const t, U const u) noexcept { + return std::cmp_less(u, t); +} + +template +constexpr bool cmp_less_equal(T const t, U const u) noexcept { + return !std::cmp_less(u, t); +} + +template +constexpr bool cmp_greater_equal(T const t, U const u) noexcept { + return !std::cmp_less(t, u); +} + } #endif