Merge pull request #399 from dg0yt/max

Fix compatibility with min()/max() macros
This commit is contained in:
Daniel Lemire 2026-08-17 14:13:58 -04:00 committed by GitHub
commit 13ecd70727
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 4 deletions

View File

@ -804,7 +804,7 @@ parse_int_string(UC const *p, UC const *pend, T &value,
// check other types overflow // check other types overflow
if (!std::is_same<T, uint64_t>::value) { if (!std::is_same<T, uint64_t>::value) {
if (i > uint64_t(std::numeric_limits<T>::max()) + uint64_t(negative)) { if (i > uint64_t((std::numeric_limits<T>::max)()) + uint64_t(negative)) {
answer.ec = std::errc::result_out_of_range; answer.ec = std::errc::result_out_of_range;
return answer; return answer;
} }
@ -821,8 +821,8 @@ parse_int_string(UC const *p, UC const *pend, T &value,
// - reinterpret_casting (~i + 1) would work, but it is not constexpr // - reinterpret_casting (~i + 1) would work, but it is not constexpr
// this is always optimized into a neg instruction (note: T is an integer // this is always optimized into a neg instruction (note: T is an integer
// type) // type)
value = T(-std::numeric_limits<T>::max() - value = T(-(std::numeric_limits<T>::max)() -
T(i - uint64_t(std::numeric_limits<T>::max()))); T(i - uint64_t((std::numeric_limits<T>::max)())));
#ifdef FASTFLOAT_VISUAL_STUDIO #ifdef FASTFLOAT_VISUAL_STUDIO
#pragma warning(pop) #pragma warning(pop)
#endif #endif

View File

@ -96,7 +96,7 @@ fastfloat_really_inline bool rounds_to_nearest() noexcept {
// asm). The value does not need to be std::numeric_limits<float>::min(), any // asm). The value does not need to be std::numeric_limits<float>::min(), any
// small value so that 1 + x should round to 1 would do (after accounting for // small value so that 1 + x should round to 1 would do (after accounting for
// excess precision, as in 387 instructions). // excess precision, as in 387 instructions).
static float volatile fmin = std::numeric_limits<float>::min(); static float volatile fmin = (std::numeric_limits<float>::min)();
float fmini = fmin; // we copy it so that it gets loaded at most once. float fmini = fmin; // we copy it so that it gets loaded at most once.
// //
// Explanation: // Explanation: