Make to_string work with __float128

This commit is contained in:
Victor Zverovich 2022-05-29 11:40:33 -07:00
parent b2ea212cd1
commit 7e63b600b6
3 changed files with 10 additions and 6 deletions

View File

@ -128,12 +128,6 @@ FMT_FUNC std::system_error vsystem_error(int error_code, string_view format_str,
namespace detail {
#if __cplusplus < 201703L
template <typename T> constexpr uint64_t basic_data<T>::pow10_significands[];
template <typename T> constexpr int16_t basic_data<T>::pow10_exponents[];
template <typename T> constexpr uint64_t basic_data<T>::power_of_10_64[];
#endif
template <typename F> inline bool operator==(basic_fp<F> x, basic_fp<F> y) {
return x.f == y.f && x.e == y.e;
}

View File

@ -1511,6 +1511,12 @@ template <typename T = void> struct basic_data {
10000000000000000000ULL};
};
#if __cplusplus < 201703L
template <typename T> constexpr uint64_t basic_data<T>::pow10_significands[];
template <typename T> constexpr int16_t basic_data<T>::pow10_exponents[];
template <typename T> constexpr uint64_t basic_data<T>::power_of_10_64[];
#endif
// This is a struct rather than an alias to avoid shadowing warnings in gcc.
struct data : basic_data<> {};

View File

@ -1982,6 +1982,10 @@ TEST(format_test, to_string) {
enum foo : unsigned char { zero };
EXPECT_EQ(fmt::to_string(zero), "0");
#if FMT_USE_FLOAT128
EXPECT_EQ(fmt::to_string(__float128(0.42)), "0.42");
#endif
}
TEST(format_test, output_iterators) {