https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126543
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2026-07-31
Status|UNCONFIRMED |NEW
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #0)
> The last assertion fails, because we allow ":60" for any utc_time, but we
> should verify that the parsed time really was a leap second.
Currently the first assertion also fails, but that's easier to fix:
-- a/libstdc++-v3/include/bits/chrono_io.h
+++ b/libstdc++-v3/include/bits/chrono_io.h
@@ -4778,7 +4778,7 @@ namespace __detail
&& !__is_floating)
{
auto __val = __read_unsigned(__num ? __num : 2);
- if (0 <= __val && __val <= 59) [[likely]]
+ if (0 <= __val && __val <= 60) [[likely]]
__s = seconds(__val);
else
{
We already have code to check for seconds(60) later, causing us to set
_M_is_leap_second, and then that causes us to fail for sys_time, gps_time, and
tai_time.