diff --git a/stl/inc/format b/stl/inc/format index 0a008c2d60f..a11d40f993b 100644 --- a/stl/inc/format +++ b/stl/inc/format @@ -2049,17 +2049,12 @@ inline void _Buffer_to_uppercase(char* _Begin, const char* _End) { } } +template +using _Make_standard_integer = conditional_t, make_signed_t<_Ty>, make_unsigned_t<_Ty>>; + template _NODISCARD constexpr bool _In_bounds(const _Ty _Value) { - if constexpr (is_unsigned_v<_CharT> && is_unsigned_v<_Ty>) { - return _Value <= (numeric_limits<_CharT>::max)(); - } else if constexpr (is_unsigned_v<_CharT>) { - return _Value >= 0 && static_cast>(_Value) <= (numeric_limits<_CharT>::max)(); - } else if constexpr (is_unsigned_v<_Ty>) { - return _Value <= static_cast>((numeric_limits<_CharT>::max)()); - } else { - return (numeric_limits<_CharT>::min)() <= _Value && _Value <= (numeric_limits<_CharT>::max)(); - } + return _STD in_range<_Make_standard_integer<_CharT>>(static_cast<_Make_standard_integer<_Ty>>(_Value)); } _NODISCARD inline int _Count_separators(size_t _Digits, const string_view _Groups) {