[ox/std] Make is_integral use raw types

This commit is contained in:
2026-05-07 01:16:57 -05:00
parent 5aa133a788
commit 45cbede7e2
+44 -46
View File
@@ -103,32 +103,33 @@ constexpr bool is_const_v<const T> = true;
// is_integral ///////////////////////////////////////////////////////////////// // is_integral /////////////////////////////////////////////////////////////////
template<typename T> struct is_integral: false_type {}; template<typename T> struct is_integral: false_type {};
template<> struct is_integral<bool> : true_type {};
template<> struct is_integral<wchar_t> : true_type {};
template<> struct is_integral<int8_t> : true_type {};
template<> struct is_integral<uint8_t> : true_type {};
template<> struct is_integral<int16_t> : true_type {};
template<> struct is_integral<uint16_t>: true_type {};
template<> struct is_integral<int32_t> : true_type {};
template<> struct is_integral<uint32_t>: true_type {};
template<> struct is_integral<const bool> : true_type {};
template<> struct is_integral<const wchar_t> : true_type {};
template<> struct is_integral<const int8_t> : true_type {};
template<> struct is_integral<const uint8_t> : true_type {};
template<> struct is_integral<const int16_t> : true_type {};
template<> struct is_integral<const uint16_t>: true_type {};
template<> struct is_integral<const int32_t> : true_type {};
template<> struct is_integral<const uint32_t>: true_type {};
// some of these need to be done with the actual language syntax because no one // some of these need to be done with the actual language syntax because no one
// can agree on what an (u)int64_t is... // can agree on what an (u)int64_t is...
template<> struct is_integral<long>: true_type {}; template<> struct is_integral<bool> : true_type {};
template<> struct is_integral<long long>: true_type {}; template<> struct is_integral<wchar_t> : true_type {};
template<> struct is_integral<unsigned long>: true_type {}; template<> struct is_integral<signed char> : true_type {};
template<> struct is_integral<unsigned long long>: true_type {}; template<> struct is_integral<unsigned char> : true_type {};
template<> struct is_integral<const long>: true_type {}; template<> struct is_integral<short> : true_type {};
template<> struct is_integral<const long long>: true_type {}; template<> struct is_integral<unsigned short> : true_type {};
template<> struct is_integral<const unsigned long>: true_type {}; template<> struct is_integral<int> : true_type {};
template<> struct is_integral<unsigned int> : true_type {};
template<> struct is_integral<long> : true_type {};
template<> struct is_integral<long long> : true_type {};
template<> struct is_integral<unsigned long> : true_type {};
template<> struct is_integral<unsigned long long> : true_type {};
template<> struct is_integral<const bool> : true_type {};
template<> struct is_integral<const wchar_t> : true_type {};
template<> struct is_integral<const signed char> : true_type {};
template<> struct is_integral<const unsigned char> : true_type {};
template<> struct is_integral<const short> : true_type {};
template<> struct is_integral<const unsigned short> : true_type {};
template<> struct is_integral<const int> : true_type {};
template<> struct is_integral<const unsigned int> : true_type {};
template<> struct is_integral<const long> : true_type {};
template<> struct is_integral<const long long> : true_type {};
template<> struct is_integral<const unsigned long> : true_type {};
template<> struct is_integral<const unsigned long long>: true_type {}; template<> struct is_integral<const unsigned long long>: true_type {};
template<typename T> template<typename T>
@@ -138,29 +139,26 @@ constexpr bool is_integral_v = is_integral<T>::value;
// is_integer ///////////////////////////////////////////////////////////////// // is_integer /////////////////////////////////////////////////////////////////
template<typename T> struct is_integer: false_type {}; template<typename T> struct is_integer: false_type {};
template<> struct is_integer<int8_t> : true_type {}; template<> struct is_integer<signed char> : true_type {};
template<> struct is_integer<uint8_t> : true_type {}; template<> struct is_integer<unsigned char> : true_type {};
template<> struct is_integer<int16_t> : true_type {}; template<> struct is_integer<short> : true_type {};
template<> struct is_integer<uint16_t>: true_type {}; template<> struct is_integer<unsigned short> : true_type {};
template<> struct is_integer<int32_t> : true_type {}; template<> struct is_integer<int> : true_type {};
template<> struct is_integer<uint32_t>: true_type {}; template<> struct is_integer<unsigned int> : true_type {};
template<> struct is_integer<int8_t const> : true_type {}; template<> struct is_integer<long> : true_type {};
template<> struct is_integer<uint8_t const> : true_type {}; template<> struct is_integer<long long> : true_type {};
template<> struct is_integer<int16_t const> : true_type {}; template<> struct is_integer<unsigned long> : true_type {};
template<> struct is_integer<uint16_t const>: true_type {}; template<> struct is_integer<unsigned long long> : true_type {};
template<> struct is_integer<int32_t const> : true_type {}; template<> struct is_integer<const signed char> : true_type {};
template<> struct is_integer<uint32_t const>: true_type {}; template<> struct is_integer<const unsigned char> : true_type {};
template<> struct is_integer<const short> : true_type {};
// some of these need to be done with the actual language syntax because no one template<> struct is_integer<const unsigned short> : true_type {};
// can agree on what an (u)int64_t is... template<> struct is_integer<const int> : true_type {};
template<> struct is_integer<long>: true_type {}; template<> struct is_integer<const unsigned int> : true_type {};
template<> struct is_integer<long long>: true_type {}; template<> struct is_integer<const long> : true_type {};
template<> struct is_integer<unsigned long>: true_type {}; template<> struct is_integer<const long long> : true_type {};
template<> struct is_integer<unsigned long long>: true_type {}; template<> struct is_integer<const unsigned long> : true_type {};
template<> struct is_integer<long const>: true_type {}; template<> struct is_integer<const unsigned long long> : true_type {};
template<> struct is_integer<long long const>: true_type {};
template<> struct is_integer<unsigned long const>: true_type {};
template<> struct is_integer<unsigned long long const>: true_type {};
template<typename T> template<typename T>
constexpr bool is_integer_v = is_integer<T>::value; constexpr bool is_integer_v = is_integer<T>::value;