diff --git a/include/fmt/format.h b/include/fmt/format.h index 295b8071..b464959d 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -195,7 +195,7 @@ namespace detail { # ifndef __clang__ # pragma intrinsic(_BitScanReverse) # endif -inline uint32_t clz(uint32_t x) { +inline int clz(uint32_t x) { unsigned long r = 0; _BitScanReverse(&r, x); @@ -204,7 +204,7 @@ inline uint32_t clz(uint32_t x) { // "r", but the only way that can happen is if "x" is 0, // which the callers guarantee to not happen. FMT_SUPPRESS_MSC_WARNING(6102) - return 31 - r; + return 31 - static_cast(r); } # define FMT_BUILTIN_CLZ(n) detail::clz(n) @@ -212,7 +212,7 @@ inline uint32_t clz(uint32_t x) { # pragma intrinsic(_BitScanReverse64) # endif -inline uint32_t clzll(uint64_t x) { +inline int clzll(uint64_t x) { unsigned long r = 0; # ifdef _WIN64 _BitScanReverse64(&r, x); @@ -229,7 +229,7 @@ inline uint32_t clzll(uint64_t x) { // "r", but the only way that can happen is if "x" is 0, // which the callers guarantee to not happen. FMT_SUPPRESS_MSC_WARNING(6102) - return 63 - r; + return 63 - static_cast(r); } # define FMT_BUILTIN_CLZLL(n) detail::clzll(n) } // namespace detail