From b063de82c739d2b93a209cc5fa3dceee8881b538 Mon Sep 17 00:00:00 2001 From: Michael Lippautz Date: Thu, 16 Apr 2026 09:51:58 +0200 Subject: [PATCH 1/2] Include in float_common.h `fastfloat_strncasecmp` relies on `std::min`. --- include/fast_float/float_common.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index bed3efd9..f17b5e9b 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -1,6 +1,7 @@ #ifndef FASTFLOAT_FLOAT_COMMON_H #define FASTFLOAT_FLOAT_COMMON_H +#include #include #include #include From 001c04cc8aea998bcbf380b35ca0369e0cd23e60 Mon Sep 17 00:00:00 2001 From: Michael Lippautz Date: Thu, 16 Apr 2026 17:17:19 +0000 Subject: [PATCH 2/2] Remove include and replace std::min with ternary operators Replaces uses of std::min with ternary operators in ascii_number.h, digit_comparison.h, and float_common.h to remove the dependency on the header in those files. --- include/fast_float/ascii_number.h | 2 +- include/fast_float/digit_comparison.h | 3 +-- include/fast_float/float_common.h | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index 85435373..12c2fddc 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -594,7 +594,7 @@ parse_int_string(UC const *p, UC const *pend, T &value, ((digits + 0x46464646u) | (digits - 0x30303030u)) & 0x80808080u; uint32_t tz = (uint32_t)countr_zero_32(magic); // 7, 15, 23, 31, or 32 uint32_t nd = (tz == 32) ? 4 : (tz >> 3); - nd = (uint32_t)std::min((size_t)nd, len); + nd = (uint32_t)(nd < len ? nd : len); if (nd == 0) { if (has_leading_zeros) { value = 0; diff --git a/include/fast_float/digit_comparison.h b/include/fast_float/digit_comparison.h index 03e70dcc..c2c83b0c 100644 --- a/include/fast_float/digit_comparison.h +++ b/include/fast_float/digit_comparison.h @@ -1,7 +1,6 @@ #ifndef FASTFLOAT_DIGIT_COMPARISON_H #define FASTFLOAT_DIGIT_COMPARISON_H -#include #include #include #include @@ -109,7 +108,7 @@ fastfloat_really_inline FASTFLOAT_CONSTEXPR14 void round(adjusted_mantissa &am, if (-am.power2 >= mantissa_shift) { // have a denormal float int32_t shift = -am.power2 + 1; - cb(am, std::min(shift, 64)); + cb(am, (shift < 64 ? shift : 64)); // check for round-up: if rounding-nearest carried us to the hidden bit. am.power2 = (am.mantissa < (uint64_t(1) << binary_format::mantissa_explicit_bits())) diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index f17b5e9b..69905882 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -1,7 +1,6 @@ #ifndef FASTFLOAT_FLOAT_COMMON_H #define FASTFLOAT_FLOAT_COMMON_H -#include #include #include #include @@ -399,7 +398,7 @@ fastfloat_strncasecmp(UC const *actual_mixedcase, UC const *expected_lowercase, size_t sz{8 / (sizeof(UC))}; for (size_t i = 0; i < length; i += sz) { val1 = val2 = 0; - sz = std::min(sz, length - i); + sz = sz < (length - i) ? sz : length - i; ::memcpy(&val1, actual_mixedcase + i, sz * sizeof(UC)); ::memcpy(&val2, expected_lowercase + i, sz * sizeof(UC)); val1 |= mask;