[fix] #4565 When using MSVC to compile v12.0.0, many compilation warn…#4572
[fix] #4565 When using MSVC to compile v12.0.0, many compilation warn…#4572vitaut merged 6 commits intofmtlib:masterfrom
Conversation
…n warnings are generated
|
@vitaut |
include/fmt/format.h
Outdated
| size += grouping.count_separators(exp); | ||
| return write_padded<Char, align::right>( | ||
| out, specs, to_unsigned(size), [&](iterator it) { | ||
| out, specs, to_unsigned(static_cast<size_t>(size)), [&](iterator it) { |
There was a problem hiding this comment.
Let's remove to_unsigned since with the cast the argument is already unsigned.
There was a problem hiding this comment.
thank you for checking my code.
There was a problem hiding this comment.
Let's remove
to_unsignedsince with the cast the argument is already unsigned.
I modified it .
…n warnings are generated
…n warnings are generated
include/fmt/format.h
Outdated
| size += grouping.count_separators(exp); | ||
| return write_padded<Char, align::right>( | ||
| out, specs, to_unsigned(size), [&](iterator it) { | ||
| out, specs, tatic_cast<size_t>(size), [&](iterator it) { |
There was a problem hiding this comment.
Typo: should be
static_cast
thank you, I modified it, and I run it successfully.
…n warnings are generated
…n warnings are generated
|
Merged, thanks. |
…_int64 to a 32bit unsigned int trigger warnings. This is a follow-up for PR fmtlib#4572.
…_int64 to a 32bit unsigned int trigger warnings. This is a follow-up for PR fmtlib#4572.
# 12.1.0 - 2025-10-29 - Optimized `buffer::append`, resulting in up to ~16% improvement on spdlog benchmarks (fmtlib/fmt#4541). Thanks @fyrsta7. - Worked around an ABI incompatibility in `std::locale_ref` between clang and gcc (fmtlib/fmt#4573). - Made `std::variant` and `std::expected` formatters work with `format_as` (fmtlib/fmt#4574, fmtlib/fmt#4575). Thanks @phprus. - Made `fmt::join<string_view>` work with C++ modules (fmtlib/fmt#4379, fmtlib/fmt#4577). Thanks @Arghnews. - Exported `fmt::is_compiled_string` and `operator""_cf` from the module (fmtlib/fmt#4544). Thanks @CrackedMatter. - Fixed a compatibility issue with C++ modules in clang (fmtlib/fmt#4548). Thanks @tsarn. - Added support for cv-qualified types to the `std::optional` formatter (fmtlib/fmt#4561, fmtlib/fmt#4562). Thanks @OleksandrKvl. - Added demangling support (used in exception and `std::type_info` formatters) for libc++ and clang-cl (fmtlib/fmt#4542, fmtlib/fmt#4560, fmtlib/fmt#4568, fmtlib/fmt#4571). Thanks @FatihBAKIR and @rohitsutreja. - Switched to global `malloc`/`free` to enable allocator customization (fmtlib/fmt#4569, fmtlib/fmt#4570). Thanks @rohitsutreja. - Made the `FMT_USE_CONSTEVAL` macro configurable by users (fmtlib/fmt#4546). Thanks @SnapperTT. - Fixed compilation with locales disabled in the header-only mode (fmtlib/fmt#4550). - Fixed compilation with clang 21 and `-std=c++20` (fmtlib/fmt#4552). - Fixed a dynamic linking issue with clang-cl (fmtlib/fmt#4576, fmtlib/fmt#4584). Thanks @FatihBAKIR. - Fixed a warning suppression leakage on gcc (fmtlib/fmt#4588). Thanks @ZedThree. - Made more internal color APIs `constexpr` (fmtlib/fmt#4581). Thanks @ishani. - Fixed compatibility with clang as a host compiler for NVCC (fmtlib/fmt#4564). Thanks @valgur. - Fixed various warnings and lint issues (fmtlib/fmt#4565, fmtlib/fmt#4572, fmtlib/fmt#4557). Thanks @LiangHuDream and @teruyamato0731. - Improved documentation (fmtlib/fmt#4549, fmtlib/fmt#4551, fmtlib/fmt#4566, fmtlib/fmt#4567, fmtlib/fmt#4578,). Thanks @teruyamato0731, @petersteneteg and @zimmerman-dev.
@esoft-com This warning occurs because on x86 Windows, size_t is a 32-bit unsigned integer, while unsigned __int64 is a 64-bit unsigned integer. Implicitly converting from unsigned __int64 to size_t can cause data loss, so MSVC emits warning C4244.
To resolve this, we should explicitly cast the value to size_t wherever the conversion happens, ideally at the point where the warning is triggered. thank you for checking the code