Skip to content

Fix ambigious call to fprintf when compiling as a C++20 module#4548

Merged
vitaut merged 1 commit intofmtlib:masterfrom
tsarn:fix-modules-compilation-error-fprintf
Sep 22, 2025
Merged

Fix ambigious call to fprintf when compiling as a C++20 module#4548
vitaut merged 1 commit intofmtlib:masterfrom
tsarn:fix-modules-compilation-error-fprintf

Conversation

@tsarn
Copy link
Copy Markdown
Contributor

@tsarn tsarn commented Sep 22, 2025

Fixes the following error when compiling with Clang and -DFMT_MODULE=ON:

In file included from <fmt>/src/fmt.cc:147:
In file included from <fmt>/src/format.cc:8:
<fmt>/include/fmt/format-inl.h:39:3: error: call to 'fprintf' is ambiguous
   39 |   fprintf(stderr, "%s:%d: assertion failed: %s", file, line, message);
      |   ^~~~~~~
/usr/include/stdio.h:360:12: note: candidate function
  360 | extern int fprintf (FILE *__restrict __stream,
      |            ^
<fmt>/include/fmt/printf.h:599:13: note: candidate function [with T = <const char *, int, const char *>]
  599 | inline auto fprintf(std::FILE* f, string_view fmt, const T&... args) -> int {
      |             ^

Compiling with GCC produces a warning instead

@vitaut vitaut merged commit e28c371 into fmtlib:master Sep 22, 2025
41 checks passed
@vitaut
Copy link
Copy Markdown
Contributor

vitaut commented Sep 22, 2025

Thank you!

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.

2 participants