finally got the anti-ambiguity overloads right?

This commit is contained in:
Pavel Novikov 2025-09-06 02:10:52 +03:00
parent e12463583f
commit 7ae62ee0d5
No known key found for this signature in database
GPG Key ID: F2C305CAE4167D14

View File

@ -373,25 +373,17 @@ integer_times_pow10(int64_t mantissa, int decimal_exponent) noexcept {
// the following overloads are here to avoid surprising ambiguity for int, // the following overloads are here to avoid surprising ambiguity for int,
// unsigned, etc. // unsigned, etc.
#if !defined(_MSC_VER) template <typename Int>
FASTFLOAT_CONSTEXPR20 inline double FASTFLOAT_CONSTEXPR20 inline std::enable_if_t<
integer_times_pow10(unsigned long long mantissa, std::is_integral<Int>::value && !std::is_signed<Int>::value, double>
int decimal_exponent) noexcept { integer_times_pow10(Int mantissa, int decimal_exponent) noexcept {
return integer_times_pow10(static_cast<uint64_t>(mantissa), decimal_exponent); return integer_times_pow10(static_cast<uint64_t>(mantissa), decimal_exponent);
} }
FASTFLOAT_CONSTEXPR20 inline double template <typename Int>
integer_times_pow10(long long mantissa, int decimal_exponent) noexcept { FASTFLOAT_CONSTEXPR20 inline std::enable_if_t<
return integer_times_pow10(static_cast<int64_t>(mantissa), decimal_exponent); std::is_integral<Int>::value && std::is_signed<Int>::value, double>
} integer_times_pow10(Int mantissa, int decimal_exponent) noexcept {
#endif
FASTFLOAT_CONSTEXPR20 inline double
integer_times_pow10(unsigned mantissa, int decimal_exponent) noexcept {
return integer_times_pow10(static_cast<uint64_t>(mantissa), decimal_exponent);
}
FASTFLOAT_CONSTEXPR20 inline double
integer_times_pow10(int mantissa, int decimal_exponent) noexcept {
return integer_times_pow10(static_cast<int64_t>(mantissa), decimal_exponent); return integer_times_pow10(static_cast<int64_t>(mantissa), decimal_exponent);
} }