Skip to content

[fix] #4565 When using MSVC to compile v12.0.0, many compilation warn…#4572

Merged
vitaut merged 6 commits intofmtlib:masterfrom
LiangHuDream:master
Oct 12, 2025
Merged

[fix] #4565 When using MSVC to compile v12.0.0, many compilation warn…#4572
vitaut merged 6 commits intofmtlib:masterfrom
LiangHuDream:master

Conversation

@LiangHuDream
Copy link
Copy Markdown
Contributor

@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

@LiangHuDream
Copy link
Copy Markdown
Contributor Author

@vitaut
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

Copy link
Copy Markdown
Contributor

@vitaut vitaut left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR.

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) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove to_unsigned since with the cast the argument is already unsigned.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you for checking my code.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's remove to_unsigned since with the cast the argument is already unsigned.

I modified it .

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) {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: should be static_cast

Copy link
Copy Markdown
Contributor Author

@LiangHuDream LiangHuDream Oct 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: should be static_cast

thank you, I modified it, and I run it successfully.

@vitaut vitaut merged commit 8eebb43 into fmtlib:master Oct 12, 2025
41 checks passed
@vitaut
Copy link
Copy Markdown
Contributor

vitaut commented Oct 12, 2025

Merged, thanks.

blizzard4591 added a commit to blizzard4591/fmt that referenced this pull request Oct 30, 2025
…_int64 to a 32bit unsigned int trigger warnings.

This is a follow-up for PR fmtlib#4572.
blizzard4591 added a commit to blizzard4591/fmt that referenced this pull request Oct 30, 2025
…_int64 to a 32bit unsigned int trigger warnings.

This is a follow-up for PR fmtlib#4572.
vitaut pushed a commit that referenced this pull request Nov 1, 2025
…_int64 to a 32bit unsigned int trigger warnings. (#4594)

This is a follow-up for PR #4572.
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 2, 2025
# 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants