diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2024-04-08 17:37:32 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2024-04-10 00:21:41 +0100 |
commit | 92b38ec84f2990d217f036dc6c5a32cde5ecfb93 (patch) | |
tree | 55b9031932aecd9623a1d03c1d436752c39b9f53 | |
parent | 639215c5eb6c56ba3830cd868d1d3ddd700b4c90 (diff) | |
download | gcc-92b38ec84f2990d217f036dc6c5a32cde5ecfb93.zip gcc-92b38ec84f2990d217f036dc6c5a32cde5ecfb93.tar.gz gcc-92b38ec84f2990d217f036dc6c5a32cde5ecfb93.tar.bz2 |
libstdc++: Fix build for targets without FP std::from_chars [PR114633]
If the faster std::from_chars is not supported for floating-point types
then just extract the value from the stream using operator>>.
This fixes a build error for targets where __cpp_lib_to_chars is not
defined.
libstdc++-v3/ChangeLog:
PR libstdc++/114633
* include/bits/chrono_io.h (_Parser::operator()) <'S'>: Use
stream extraction if std::from_chars is not available.
-rw-r--r-- | libstdc++-v3/include/bits/chrono_io.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libstdc++-v3/include/bits/chrono_io.h b/libstdc++-v3/include/bits/chrono_io.h index b9eb3d2..3b34992 100644 --- a/libstdc++-v3/include/bits/chrono_io.h +++ b/libstdc++-v3/include/bits/chrono_io.h @@ -3685,6 +3685,7 @@ namespace __detail if (!__is_failed(__err)) [[likely]] { long double __val{}; +#if __cpp_lib_to_chars string __str = std::move(__buf).str(); auto __first = __str.data(); auto __last = __first + __str.size(); @@ -3694,6 +3695,9 @@ namespace __detail if ((bool)ec || ptr != __last) [[unlikely]] __err |= ios_base::failbit; else +#else + if (__buf >> __val) +#endif { duration<long double> __fs(__val); if constexpr (__is_floating) |