3340 Commits

Author SHA1 Message Date
Edoardo Morandi
ea985e84f8
Remove some implicit conversions (#4447)
* fix: avoid an implicit cast

The "1" used for the bitshift is treated as int, and this causes an
implicit conversion to `UInt` when performing the logical and.
Explicitly casting the number to `UInt` avoids the warning.

* fix: avoid implicit conversions for indices

Some indices in `include/fmt/base.h` are expressed as `int` types, which
causes an implicit conversion to a `size_t` when they are actually used
as index. Explicitly casting the value avoids the warning.

* fix: avoid an implicit conversion using size_t

The number of bits is used to express the size of a buffer. Using an
`int` causes an implicit conversion warning, let's use a `size_t` which
is the right type for the job.
2025-05-24 09:22:03 -07:00
Andreas Reischuck
f7033da09e
Avoid include locale inline if C++20 modules are enabled (#4451)
MSVC hints with:
```
fmt\include\fmt\format-inl.h(26): warning C5244: '#include <locale>' in the purview of module 'fmt' appears erroneous.  Consider moving that directive before the module declaration, or replace the textual inclusion with 'import <locale>;'.
```

Then fails the build with `type redefinition`.
2025-05-21 17:18:18 -07:00
Tobias Schlüter
b723c021df
Give useful error when misusing fmt::ptr. (#4453)
static_assert(bla, "") prints an empty message but not the condition with at least MSVC. Add an informative message.
2025-05-20 12:21:06 -07:00
Kefu Chai
ab161a71c6
Fix some typos in comments (#4448)
- s/instantion/instantiation/
- s/uninitalized/uninitialized/
- s/costexpr/constexpr/

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2025-05-15 06:28:14 -07:00
Victor Chernyakin
b5266fd3b9
Remove some redundant consts (#4445)
`constexpr` variables are implicitly `const`.
2025-05-12 10:41:58 -07:00
Victor Zverovich
07885271a1 Minor cleanup 2025-05-11 07:54:23 -07:00
Jeremy Rifkin
4999416e5c
Fix reference_wrapper ambiguity with format_as (#4434) 2025-05-10 11:15:45 -07:00
Victor Zverovich
d5c33e4f45 Make template parameter order consistent 2025-05-04 15:23:48 -07:00
Victor Zverovich
a2225f2887 Remove unused include 2025-05-04 15:16:38 -07:00
Victor Zverovich
b43b2f9537 Cleanup standard formatters 2025-05-04 13:04:06 -07:00
Victor Zverovich
1312b4a162 Cleanup standard formatters 2025-05-04 12:37:28 -07:00
Victor Zverovich
4404dc05dd Consolidate implementation details 2025-05-04 10:48:47 -07:00
Victor Zverovich
7bb6fcb325 Bump version 2025-05-04 09:36:07 -07:00
Victor Zverovich
542ea7c40b Clarify that Formatter parameter is deprecated 2025-05-03 10:28:46 -07:00
Victor Zverovich
7fdd6846ba Bump version 2025-05-03 09:02:35 -07:00
Victor Zverovich
448929d491 Update and apply clang-format 2025-05-03 07:29:31 -07:00
Victor Zverovich
0ed2a65a8a Clarify why we use __builtin_strlen instead of strlen 2025-04-27 11:08:27 -07:00
Victor Zverovich
2680831231 Cleanun string_view 2025-04-27 09:34:38 -07:00
Barry Revzin
8978ab09b2
Avoiding __builtin_strlen (#4429) 2025-04-27 09:32:10 -07:00
Victor Zverovich
c936e2e44e Implement debug format for error_code 2025-04-27 09:06:17 -07:00
Victor Zverovich
a7d7b894cd Implement the s specifier for error_code 2025-04-27 08:51:18 -07:00
Victor Zverovich
e98155a6fb Remove redundant specializations 2025-04-26 10:41:03 -07:00
Victor Zverovich
41b3bed4d2 Clarify why we don't use qualified names 2025-04-26 10:12:06 -07:00
Victor Zverovich
9db5e4df22 Don't specialize std::is_floating_point 2025-04-26 08:17:05 -07:00
Victor Zverovich
906eaf2ddb Make specifier order consistent 2025-04-25 12:10:21 -07:00
LocalSpook
c709138359 Add support for incomplete types 2025-04-20 10:16:11 -07:00
Victor Zverovich
0a917ee2f5 Minor comment tweak 2025-04-19 10:18:01 -07:00
Victor Zverovich
8061c7c8c4 Cleanup duration formatter 2025-04-19 10:08:24 -07:00
Victor Zverovich
7b59df4119 Remove redundant member 2025-04-19 10:08:23 -07:00
hirohira
b8192d233a
Fix build error with MSVC v141 (#4413) 2025-04-15 08:21:38 -07:00
Victor Zverovich
e814b5fabf Reduce template parametrization 2025-04-13 10:17:17 -07:00
Victor Zverovich
ed0d216f7e Fix localization and formatting of timezone names 2025-04-13 09:52:59 -07:00
Victor Zverovich
bd9554a29e Fix formatting of timezone names 2025-04-13 08:52:26 -07:00
Victor Zverovich
f086dc0d27 Fix timezone handling in tm 2025-04-13 08:23:40 -07:00
Victor Zverovich
f10b6dd816 Improve chrono formatting 2025-04-12 09:59:06 -07:00
Victor Zverovich
b28214487d Fix handling of %Z 2025-04-12 08:51:22 -07:00
Victor Zverovich
da776c9a66 Test timezone 2025-04-12 07:53:58 -07:00
Mattes D
64db979e38
Added a missing FMT_STRING in fmt::println() (#4407) 2025-04-07 15:35:55 -07:00
Victor Zverovich
5f2e61fdd5 Cleanup chrono detail 2025-04-06 09:54:47 -07:00
Victor Zverovich
b3d45e1d3f Remove fmt_detail 2025-04-06 09:24:20 -07:00
Victor Zverovich
5199e0f885 Fix a flush issue on libstdc++ 2025-03-30 10:54:14 -07:00
Victor Zverovich
e1ab383361 Report an error when timezone is not available 2025-03-29 09:10:00 -07:00
Victor Zverovich
f53055efe0 Revert "Workaround an ABI issue in spdlog"
This reverts commit 784eac839df77df1852dc1c50b17b76c3aec8f4a.
2025-03-29 07:48:20 -07:00
Victor Zverovich
443a8ef342 Deprecate fmt::localtime 2025-03-23 10:46:02 -07:00
Victor Zverovich
3607e92dc9 Bump version 2025-03-23 10:44:46 -07:00
Victor Zverovich
43e31614cc Test ambiguous time 2025-03-23 10:34:37 -07:00
Victor Zverovich
9d6e24c64e Fix handling of long with FMT_BUILTIN_TYPES=0 2025-03-22 07:52:54 -07:00
Victor Zverovich
784eac839d Workaround an ABI issue in spdlog 2025-03-22 07:01:45 -07:00
Victor Zverovich
6fdf225a32 Always inline value ctors in optimized gcc mode only
This reverts commit 332da79bf37d06bb549810fd9420fd47407ebd89.
2025-03-16 10:03:53 -07:00
Victor Zverovich
332da79bf3 Always inline value ctors 2025-03-16 09:31:52 -07:00
Victor Zverovich
7b273fbb54 Minor cleanup 2025-03-16 08:58:44 -07:00
Victor Zverovich
dd780fde44 Add clang-3.4 2025-03-15 12:22:10 -07:00
Dean Glazeski
37e6474718
Fix dynamic named arg format spec handling (#4361)
When dealing with dynamic named format args, need to account for
nested named args when skipping the content of the replacement.

Fixes #4360
2025-03-15 09:34:11 -07:00
Victor Zverovich
9212ff6ca1 Apply coding conventions and use constexpr 2025-03-02 09:03:06 -08:00
Dean Glazeski
864bdf9638
Report error on duplicate named arg names (#4367) 2025-03-02 07:47:03 -08:00
Victor Chernyakin
b776cf66fc
Optimize text_style using bit packing (#4363) 2025-03-01 11:18:19 -08:00
Thomas Khyn
577fd3be88 Fix TU-local entity exposition error in GCC 15 2025-02-26 11:14:15 -08:00
Thomas Khyn
faac8b1fa9 Remove exports in std.h
This fixes 'declaration of partial specialization in unbraced export-declaration' errors in GCC 15
2025-02-26 11:14:15 -08:00
Victor Zverovich
4e5aafbf43 Bump version 2025-02-25 17:20:47 -08:00
Victor Zverovich
3401ce2be2 Fix ABI compatibility 2025-02-25 13:32:24 -08:00
Dean
7f7695524a
Fix conflict with std::ignore (#4356)
In situations where `using namespace std;` is used, compiler warnings
can be generated because of local variables named `ignore`. This renames
those variables to something else to address the name conflict.
2025-02-19 23:08:21 -08:00
Victor Chernyakin
94ab51cb8c
Simplify implementation of operator""_cf (#4349) 2025-02-14 02:02:09 -08:00
Victor Zverovich
0ca42e836e Workaround an MSVC v140 bug 2025-02-13 14:12:16 +01:00
Markus Kitsinger
f2cec917da
Move is_compiled_string to public API (#4342) 2025-02-04 16:20:27 -08:00
Sergiu Deitsch
d5b866e242
fix gcc 8.3 compile errors (#4336) 2025-02-03 08:51:58 -08:00
LocalSpook
c9267da4df Fix typo in FMT_HAS_BUILTIN check 2025-01-31 08:42:19 -08:00
Victor Zverovich
52eeeb52a6 Make exponent threshold depend on representation (#3649) 2025-01-26 12:10:48 -08:00
timsong-cpp
cb6fdf2191
Restore constraint on map formatter (#4326)
* Restore constraint on map formatter
* Remove unnecessary double parens
2025-01-25 08:31:07 -08:00
timsong-cpp
f841ae61e2
Fix #4303: avoid instantiating formatter<const T> (#4325) 2025-01-24 10:53:10 -08:00
Matt
a3d05d70ce
Silence a constexpr warning when compiling with MSVC and /W4 (#4322) 2025-01-23 12:11:23 -08:00
Victor Zverovich
41539c29f3 Workaround a bug in gcc 6 (#4318) 2025-01-22 11:12:41 -08:00
Victor Zverovich
9ff9c695db Bump version 2025-01-18 10:28:46 -08:00
Victor Zverovich
5f0572acdc Workaround a compilation error on gcc 9.4 2025-01-18 09:01:00 -08:00
Vladislav Shchapov
898d438571
Fix formatting into std::ostreambuf_iterator using a compiled format (#4312)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-01-18 07:16:06 -08:00
Aaron Bishop
937b7c5c10
Add args() accessor back to fmt::format_context (#4310)
Add args() accessor back to fmt::format_context
Add test that would fail to compile if you can't create a fmt::format_context from another fmt::format_context
2025-01-17 10:28:34 -08:00
Victor Zverovich
01914f0389 Reduce size of basic_specs 2025-01-12 09:18:11 -08:00
Victor Zverovich
c43da35701 Workaround an ICE when using modules with gcc 14.2 and earlier 2025-01-12 08:57:43 -08:00
Victor Zverovich
b0b3dc5ff9 Bump version 2025-01-12 08:13:56 -08:00
Victor Zverovich
586ea06f02 Rename set_fill to copy_fill_from 2025-01-11 09:22:15 -08:00
Marcel Breyer
bfbdc2be9a Add parameter to the fallback to_sys function. 2025-01-11 08:48:20 -08:00
Victor Zverovich
21aa0956d4 Restore ABI compatibility 2025-01-10 17:36:09 -08:00
Edoardo Lolletti
3f864a4505
Address MSVC C4127 warning when formatting non unicode tm (#4299)
Use `const_check` to silence visual studio's W4 level diagnostic regarding conditional expressions being constants, addresses https://github.com/fmtlib/fmt/issues/4294
2025-01-08 14:21:48 -08:00
Vladislav Shchapov
2c3a5698ef Simplify a copying the fill from basic_specs
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-01-05 09:33:05 -08:00
Victor Zverovich
fc1b0f3486 Clarify use of FMT_THROW in a comment 2025-01-05 07:31:19 -10:00
GamesTrap
1d066890c7 Resolve C4702 unreachable code warnings 2025-01-03 16:39:11 -08:00
Vladislav Shchapov
dad3237514 Fix a bug when copying the fill from basic_specs
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-01-03 09:16:21 -08:00
Vladislav Shchapov
880e1494dc Improve xchar support for std::bitset formatter
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2025-01-03 09:16:21 -08:00
Victor Zverovich
e9ec4fdc88 Bump version 2024-12-27 08:41:06 -08:00
Victor Zverovich
feb72126b4 Readd FMT_NO_UNIQUE_ADDRESS 2024-12-26 13:54:06 -08:00
Victor Zverovich
3e04222d53 Restore ABI compatibility with 11.0.2 2024-12-26 10:45:15 -08:00
Victor Zverovich
11742a09c7 Clarify that format_string should be used instead of fstring 2024-12-26 09:39:01 -08:00
Victor Zverovich
faf3f84085 Bump version 2024-12-25 08:18:51 -08:00
Victor Zverovich
a3ef285aec Always inline const_check to improve debug codegen in clang 2024-12-24 12:54:44 -08:00
YexuanXiao
86dae01c23
Fix compatibility with older versions of VS (#4271) 2024-12-23 07:26:11 -08:00
YexuanXiao
7c3d0152e5
Use the _MSVC_STL_UPDATE macro to detect STL (#4267) 2024-12-19 06:47:13 -08:00
Hannes Harnisch
7c50da5385
Allow getting size of dynamic format arg store (#4270) 2024-12-18 19:54:35 -08:00
Sascha Hestermann
873670ba3f Make parameter basic_memory_buffer<char, SIZE>& buf of to_string const 2024-12-11 12:19:20 -08:00
Vladislav Shchapov
141380172f
Allow disabling <filesystem> by define FMT_CPP_LIB_FILESYSTEM=0 (#4259)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-12-09 07:13:24 -08:00
Alex Hirsch
9600fee020
Include <filesystem> only if FMT_CPP_LIB_FILESYSTEM is set (#4258)
This change results out of necessity since the Nintendo Switch console
SDK does not support `std::filesystem`. The SDK still provides the
`<filesystem>` header, but with an `#error` directive, effectively
breaking any build that includes `<filesystem>`

Because `<filesystem>` is present, `FMT_HAS_INCLUDE` is insufficient
here. With this change and `FMT_CPP_LIB_FILESYSTEM` in place, one can
define `FMT_CPP_LIB_FILESYSTEM=0` to work around this issue.

This assumes that `<filesystem>` can be included (without warnings) if
`FMT_CPP_LIB_FILESYSTEM` is set. If this is not the case, fmt would be
broken even before this change as `std::filesystem::path` is used
without the accompanying header.
2024-12-07 06:45:54 -08:00
jsirpoma
385c01dc7b
Allow bit_cast to work for 80bit long double (#4246) 2024-11-29 01:25:21 -08:00
Justin Riddell
536cabd562
Export all range join overloads (#4239) 2024-11-15 13:01:59 -08:00
Victor Zverovich
bfd95392c7 Remove MSVC 2015 workaround 2024-11-15 08:19:01 -08:00
Justin Riddell
9ced61bca4
Replace std::forward for clang-tidy (#4236)
Should fix #4231
2024-11-14 09:06:30 -08:00
Victor Zverovich
a6c45dfea8 Fix modular build 2024-11-10 09:06:50 -08:00
Victor Zverovich
a35389b3c2 Corrently handle buffer flush 2024-11-09 10:56:31 -08:00
Vladislav Shchapov
5a3576acc8
Implement fmt::join for tuple-like objects (#4230)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-11-09 08:28:46 -08:00
Vladislav Shchapov
542600013f
Suppress MSVC warnings "C4127: conditional expression is constant" by used const_check (#4233)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-11-09 07:43:46 -08:00
Victor Zverovich
720da57bab Remove reference to unused intrinsic 2024-11-03 17:18:33 -08:00
Victor Zverovich
680db66c3a Explicitly export symbols from detail 2024-11-03 09:13:17 -08:00
Victor Zverovich
56ce41ef63 Remove initializer_list dependency 2024-11-03 08:26:25 -08:00
Victor Zverovich
cf50e4d6a4 Fix const[expr] in context API 2024-11-03 07:25:52 -08:00
Victor Zverovich
6580d7b808 Cleanup the format API 2024-11-03 06:57:36 -08:00
Victor Zverovich
7e73566ce7 Minor cleanup 2024-11-02 11:24:24 -07:00
Victor Zverovich
8523dba2dc Make constexpr precede explicit consistently 2024-11-02 11:03:03 -07:00
Victor Zverovich
e3d3b24fc1 Minor cleanup 2024-11-02 10:46:58 -07:00
Victor Zverovich
1521bba701 Use consistent types for argument count 2024-11-02 08:08:36 -07:00
Victor Zverovich
4b8e2838f0 More cleanup 2024-10-27 10:56:52 -07:00
Victor Zverovich
7d4662f7ab Remove FMT_BUILTIN_CTZ 2024-10-27 10:22:43 -07:00
Victor Zverovich
27110bc474 Minor cleanup 2024-10-27 09:44:25 -07:00
Sergey
68f3153762
Fix narrowing conversion warning in struct fstring (#4210)
Warning C4267: 'initializing': conversion from 'size_t' to 'const int', possible loss of data.
2024-10-27 06:41:20 -07:00
Vladislav Shchapov
168df9a064
Implement fmt::format_to into std::vector<char> (#4211)
* Implement fmt::format_to into std::vector<char>

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

* Move get_container to the trait

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>

---------

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2024-10-26 09:23:59 -07:00
Sergey
4daa3d591f
Fix error: cannot use 'try' with exceptions disabled in Win LLVM Clang (#4208)
Fixes #4207.

LLVM Clang on Windows does not define `__GNUC__`. The preprocessor falls
to `#elif FMT_MSC_VERSION && !_HAS_EXCEPTIONS` with `_HAS_EXCEPTIONS 1`
defined in vcruntime.h:104.
2024-10-23 10:43:55 -07:00
Victor Zverovich
2b6a786e35 Use standard context in print 2024-10-20 09:08:24 -07:00
Victor Zverovich
a16ff5787b Add support for code units > 0xFFFF in fill 2024-10-20 07:59:58 -07:00
Victor Zverovich
601be1cbe7 Add support for code units > 0xFFFF in fill 2024-10-19 08:15:50 -07:00
Vinay Yadav
58c185b634
Changing type of data_ to size_t to avoid compilation warnings (#4200)
Changing type data_ to size_t because
1. If lib is cross-compiled for win32 using MXE environment it cause
   compilation warning -Wconversion on line 730 as sizeof(unsigned long)
   = 4 and sizeof(size_t) = 8
2. When lib is compiled on Unix like compiler generate warning
   -Wuseless-cast if static_cast is used to fix issue in 1
2024-10-19 06:59:21 -07:00
Yi Kong
4046f97278
Fix -Wmissing-noreturn warning (#4194)
Fixes warning reported by top of trunk Clang:

include/fmt/chrono.h:447:36: error: function 'throw_duration_error' could be declared with attribute 'noreturn'
2024-10-10 08:59:56 -07:00
Victor Zverovich
6bdc12a199 detail_exported -> detail 2024-10-09 11:04:55 -07:00
Victor Zverovich
786a4b0968 Cleanup fixed_string 2024-10-09 08:42:49 -07:00
Haowei
22701d5f63
Address build failures when using Tip-of-Tree clang. (#4187)
When using ToT clang to build fmtlib, it complains 'sv' is not
initialized by a constant expression. This patch addresses this
issue.
2024-10-04 06:45:29 -07:00
Casey Carter
e62c41ffb0
Conform std::iterator_traits<fmt::appender> to [iterator.traits]/1 (#4185)
* Conform `std::iterator_traits<fmt::appender>` to [iterator.traits]/1

> In addition, the types
> ```c++
> iterator_traits<I>::pointer
> iterator_traits<I>::reference
> ```
> shall be defined as the iterator’s pointer and reference types; that is, for an iterator object `a` of class type, the same type as `decltype(a.operator->())` and `decltype(*a)`, respectively. The type `iterator_traits<I>::pointer` shall be void for an iterator of class type `I` that does not support `operator->`. Additionally, in the case of an output iterator, the types
> ```c++
> iterator_traits<I>::value_type
> iterator_traits<I>::difference_type
> iterator_traits<I>::reference
> ```
> may be defined as `void`.

* Remove unnecessary member types from basic_appender

This reverts commit 1accf6c0a043fb445cbbfeefdbc1f91a08e3099f.

* Address clang-format issue
2024-10-03 09:05:14 -07:00
Francesco Cavaliere
18792893d8
Silencing Wextra-semi warning (#4188) 2024-10-03 09:00:55 -07:00
Victor Zverovich
c95722ad62 Improve naming consistency 2024-09-29 18:17:44 -07:00
Victor Zverovich
db06b0df87 Use countl_zero in bigint 2024-09-29 17:11:22 -07:00
Victor Zverovich
b9ec48d9ca Cleanup bigint 2024-09-29 12:03:07 -07:00
Victor Zverovich
3faf6f181e Add min_of/max_of 2024-09-29 10:24:39 -07:00
Victor Zverovich
d64b100a30 Relax constexpr 2024-09-29 10:04:57 -07:00
Victor Zverovich
ff9ee0461a Fix handling FMT_BUILTIN_TYPES 2024-09-28 09:23:48 -07:00
Victor Zverovich
cacc3108c5 Don't assume repeated evaluation of string literal produce the same pointer
Patch by @zygoloid (#4177).
2024-09-28 08:09:33 -07:00
Justin Riddell
fade652ade
Require clang >=15 for _BitInt support (#4176)
For appleclang, fixes issue #4173
2024-09-26 16:10:51 -07:00
Cameron Angus
96dca569a1
Module linkage fixes for shared build (#4169)
* Mark some in-class defined member functions as explicitly inline/constexpr, to avoid missing external symbols when using fmt module with shared build due to modules not defaulting to implicit inline.

* Switch constexpr to inline for context::arg(string_view).
NOTE: Looks as if basic_format_args::get(string_view) could probably be made constexpr instead, but sticking with minimal change approach.

* Work around apparent non-conformance of older MSVC compilers.

* Switch format_int::str() from constexpr to inline to satisfy libstdc++ std::string constexpr limitations.

* Replace usages of macros for constexpr/inline with keywords.

* Fix for locations requiring C++14 constexpr.

* Further minor constexpr tweaks.

* Apply clang format
2024-09-26 07:53:55 -07:00
Victor Zverovich
891c9a73ae Cleanup format API 2024-09-22 15:52:55 -07:00
Victor Zverovich
9282222b7d Export more 2024-09-22 15:10:58 -07:00
Victor Zverovich
ff92223549 Simplify locale handling 2024-09-22 10:21:19 -07:00
Victor Zverovich
80c4d42c66 Cleanup format.h 2024-09-22 08:20:26 -07:00
Victor Zverovich
3b70966df5 Add width and alignment support to error_code 2024-09-21 07:58:03 -07:00
Victor Zverovich
05226c4bd9 Remove type_identity 2024-09-20 19:13:09 -07:00
Victor Zverovich
c283b458a5 Cleanup format.h 2024-09-20 19:00:23 -07:00
Paulo Assis
fe79932c26
Fix conversion warning on chrono.h (#4170)
* Fix conversion warning on chrono.h

warning: conversion from 'time_t' {aka 'long long int'} to 'long int' may change value [-Wconversion]

* Changing write_utc_offset to accept a long long instead of the static_cast as requested..
2024-09-20 16:47:27 -07:00
Victor Zverovich
23fcf1942a Apply clang-format 2024-09-20 09:34:10 -07:00