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.
This commit is contained in:
Jonathan Wakely 2024-04-08 17:37:32 +01:00
parent 639215c5eb
commit 92b38ec84f
No known key found for this signature in database

View file

@ -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)