diff --git a/include/fmt/base.h b/include/fmt/base.h index aa04b14c..af91a11a 100644 --- a/include/fmt/base.h +++ b/include/fmt/base.h @@ -567,9 +567,8 @@ template class basic_string_view { FMT_CONSTEXPR auto compare(basic_string_view other) const -> int { size_t str_size = size_ < other.size_ ? size_ : other.size_; int result = detail::compare(data_, other.data_, str_size); - if (result == 0) - result = size_ == other.size_ ? 0 : (size_ < other.size_ ? -1 : 1); - return result; + if (result != 0) return result; + return size_ == other.size_ ? 0 : (size_ < other.size_ ? -1 : 1); } FMT_CONSTEXPR friend auto operator==(basic_string_view lhs, @@ -1146,22 +1145,12 @@ template struct arg_mapper { FMT_MAP_API auto map(double x) -> double { return x; } FMT_MAP_API auto map(long double x) -> long double { return x; } - template - FMT_MAP_API auto map(bitint x) -> long long { - return x; - } - template - FMT_MAP_API auto map(ubitint x) -> unsigned long long { - return x; - } - template 64)> - FMT_MAP_API auto map(bitint) -> unformattable { - return {}; - } - template 64)> - FMT_MAP_API auto map(ubitint) -> unformattable { - return {}; - } + template + FMT_MAP_API auto map(bitint) + -> conditional_t; + template + FMT_MAP_API auto map(ubitint) + -> conditional_t; FMT_MAP_API auto map(Char* x) -> const Char* { return x; } FMT_MAP_API auto map(const Char* x) -> const Char* { return x; } @@ -2169,9 +2158,13 @@ template class value { constexpr FMT_INLINE value(unsigned long long x FMT_BUILTIN) : ulong_long_value(x) {} template - constexpr FMT_INLINE value(bitint x FMT_BUILTIN) : long_long_value(x) {} + constexpr FMT_INLINE value(bitint x FMT_BUILTIN) : long_long_value(x) { + static_assert(N <= 64, "unsupported _BitInt"); + } template - constexpr FMT_INLINE value(ubitint x FMT_BUILTIN) : ulong_long_value(x) {} + constexpr FMT_INLINE value(ubitint x FMT_BUILTIN) : ulong_long_value(x) { + static_assert(N <= 64, "unsupported _BitInt"); + } FMT_INLINE value(int128_opt x FMT_BUILTIN) : int128_value(x) {} FMT_INLINE value(uint128_opt x FMT_BUILTIN) : uint128_value(x) {} constexpr FMT_INLINE value(float x FMT_BUILTIN) : float_value(x) {}