Skip to content

Commit 7ae62ee

Browse files
committed
finally got the anti-ambiguity overloads right?
1 parent e124635 commit 7ae62ee

File tree

1 file changed

+8
-16
lines changed

1 file changed

+8
-16
lines changed

include/fast_float/parse_number.h

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -373,25 +373,17 @@ integer_times_pow10(int64_t mantissa, int decimal_exponent) noexcept {
373373

374374
// the following overloads are here to avoid surprising ambiguity for int,
375375
// unsigned, etc.
376-
#if !defined(_MSC_VER)
377-
FASTFLOAT_CONSTEXPR20 inline double
378-
integer_times_pow10(unsigned long long mantissa,
379-
int decimal_exponent) noexcept {
380-
return integer_times_pow10(static_cast<uint64_t>(mantissa), decimal_exponent);
381-
}
382-
383-
FASTFLOAT_CONSTEXPR20 inline double
384-
integer_times_pow10(long long mantissa, int decimal_exponent) noexcept {
385-
return integer_times_pow10(static_cast<int64_t>(mantissa), decimal_exponent);
386-
}
387-
#endif
388-
FASTFLOAT_CONSTEXPR20 inline double
389-
integer_times_pow10(unsigned mantissa, int decimal_exponent) noexcept {
376+
template <typename Int>
377+
FASTFLOAT_CONSTEXPR20 inline std::enable_if_t<
378+
std::is_integral<Int>::value && !std::is_signed<Int>::value, double>
379+
integer_times_pow10(Int mantissa, int decimal_exponent) noexcept {
390380
return integer_times_pow10(static_cast<uint64_t>(mantissa), decimal_exponent);
391381
}
392382

393-
FASTFLOAT_CONSTEXPR20 inline double
394-
integer_times_pow10(int mantissa, int decimal_exponent) noexcept {
383+
template <typename Int>
384+
FASTFLOAT_CONSTEXPR20 inline std::enable_if_t<
385+
std::is_integral<Int>::value && std::is_signed<Int>::value, double>
386+
integer_times_pow10(Int mantissa, int decimal_exponent) noexcept {
395387
return integer_times_pow10(static_cast<int64_t>(mantissa), decimal_exponent);
396388
}
397389

0 commit comments

Comments
 (0)