From a3a56b24e8fce1f44d8beb614309047507ee095f Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Tue, 27 Jan 2026 23:03:07 -0600 Subject: [PATCH] [ox/std] Fix is_integer_v --- deps/ox/src/ox/std/serialize.hpp | 2 +- deps/ox/src/ox/std/typetraits.hpp | 82 +++++++++++++++++-------------- 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/deps/ox/src/ox/std/serialize.hpp b/deps/ox/src/ox/std/serialize.hpp index 0690171a..adc30d07 100644 --- a/deps/ox/src/ox/std/serialize.hpp +++ b/deps/ox/src/ox/std/serialize.hpp @@ -71,7 +71,7 @@ constexpr ox::Error serialize(Writer_c auto &w, const VectorMemMap &vm } template -constexpr ox::Error serialize(Writer_c auto &w, T val) noexcept requires(is_integer_v) { +constexpr ox::Error serialize(Writer_c auto &w, T val) noexcept requires(is_integral_v) { ox::Array tmp; for (auto i = 0u; i < sizeof(T); ++i) { tmp[i] = static_cast((val >> i * 8) & 255); diff --git a/deps/ox/src/ox/std/typetraits.hpp b/deps/ox/src/ox/std/typetraits.hpp index a9619dbe..1d25fd3d 100644 --- a/deps/ox/src/ox/std/typetraits.hpp +++ b/deps/ox/src/ox/std/typetraits.hpp @@ -34,6 +34,41 @@ inline constexpr bool is_trivially_copyable_v = __is_trivially_copyable(T); namespace ox { +template +struct remove_cv { + using type = T; +}; + +template +struct remove_cv { + using type = T; +}; + +template +struct remove_cv { + using type = T; +}; + +template +struct remove_cv { + using type = T; +}; + + +template +struct remove_const { + using type = T; +}; + +template +struct remove_const { + using type = T; +}; + +template +using remove_const_t = typename remove_const::type; + + template struct integral_constant { @@ -109,6 +144,12 @@ template<> struct is_integer : true_type {}; template<> struct is_integer: true_type {}; template<> struct is_integer : true_type {}; template<> struct is_integer: true_type {}; +template<> struct is_integer : true_type {}; +template<> struct is_integer : true_type {}; +template<> struct is_integer : true_type {}; +template<> struct is_integer: true_type {}; +template<> struct is_integer : true_type {}; +template<> struct is_integer: true_type {}; // some of these need to be done with the actual language syntax because no one // can agree on what an (u)int64_t is... @@ -116,9 +157,13 @@ template<> struct is_integer: true_type {}; template<> struct is_integer: true_type {}; template<> struct is_integer: true_type {}; template<> struct is_integer: true_type {}; +template<> struct is_integer: true_type {}; +template<> struct is_integer: true_type {}; +template<> struct is_integer: true_type {}; +template<> struct is_integer: true_type {}; template -constexpr bool is_integer_v = is_integral::value; +constexpr bool is_integer_v = is_integer::value; template concept Integer_c = is_integer::value; @@ -264,41 +309,6 @@ template constexpr bool is_move_constructible_v = detail::is_move_constructible(0); -template -struct remove_cv { - using type = T; -}; - -template -struct remove_cv { - using type = T; -}; - -template -struct remove_cv { - using type = T; -}; - -template -struct remove_cv { - using type = T; -}; - - -template -struct remove_const { - using type = T; -}; - -template -struct remove_const { - using type = T; -}; - -template -using remove_const_t = typename remove_const::type; - - // is String? template