diff --git a/include/fast_float/parse_number.h b/include/fast_float/parse_number.h index 71989f6..d2b2aaf 100644 --- a/include/fast_float/parse_number.h +++ b/include/fast_float/parse_number.h @@ -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, // unsigned, etc. -#if !defined(_MSC_VER) -FASTFLOAT_CONSTEXPR20 inline double -integer_times_pow10(unsigned long long mantissa, - int decimal_exponent) noexcept { +template +FASTFLOAT_CONSTEXPR20 inline std::enable_if_t< + std::is_integral::value && !std::is_signed::value, double> +integer_times_pow10(Int mantissa, int decimal_exponent) noexcept { return integer_times_pow10(static_cast(mantissa), decimal_exponent); } -FASTFLOAT_CONSTEXPR20 inline double -integer_times_pow10(long long mantissa, int decimal_exponent) noexcept { - return integer_times_pow10(static_cast(mantissa), decimal_exponent); -} -#endif -FASTFLOAT_CONSTEXPR20 inline double -integer_times_pow10(unsigned mantissa, int decimal_exponent) noexcept { - return integer_times_pow10(static_cast(mantissa), decimal_exponent); -} - -FASTFLOAT_CONSTEXPR20 inline double -integer_times_pow10(int mantissa, int decimal_exponent) noexcept { +template +FASTFLOAT_CONSTEXPR20 inline std::enable_if_t< + std::is_integral::value && std::is_signed::value, double> +integer_times_pow10(Int mantissa, int decimal_exponent) noexcept { return integer_times_pow10(static_cast(mantissa), decimal_exponent); }