From: Jonathan Wakely Date: Thu, 5 Jan 2023 14:04:32 +0000 (+0000) Subject: libstdc++: Disable broken std::format for floating-point types [PR108221] X-Git-Tag: basepoints/gcc-14~2160 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c330fd49464f3d47a7c171d767eb3a011add76b;p=thirdparty%2Fgcc.git libstdc++: Disable broken std::format for floating-point types [PR108221] If we don't have std::to_chars for floating-point types (either because float and double are not IEEE format, or size_t is 16-bit) then we can't use them with std::format. This causes a bootstrap failure since std/c++20/tzdb.cc was added to the library, because now includes . This change just disables formatting support for those types. This is not a proper fix, but solves the bootstrap failure for now. libstdc++-v3/ChangeLog: PR libstdc++/108221 * include/std/format (basic_format_arg) [!__cpp_lib_to_chars]: Disable visiting floating-point types. --- diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format index 98421e8c123e..77f7c9fef3f1 100644 --- a/libstdc++-v3/include/std/format +++ b/libstdc++-v3/include/std/format @@ -3034,6 +3034,7 @@ namespace __format return std::forward<_Visitor>(__vis)(_M_val._M_ll); case _Arg_ull: return std::forward<_Visitor>(__vis)(_M_val._M_ull); +#if __cpp_lib_to_chars // FIXME: need to be able to format these types! case _Arg_flt: return std::forward<_Visitor>(__vis)(_M_val._M_flt); case _Arg_dbl: @@ -3046,6 +3047,7 @@ namespace __format return std::forward<_Visitor>(__vis)(_M_val._M_f128); case _Arg_ibm128: return std::forward<_Visitor>(__vis)(_M_val._M_ibm128); +#endif #endif case _Arg_str: return std::forward<_Visitor>(__vis)(_M_val._M_str);