https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113327
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- I have a patch that fixes the problem for this_thread::sleep_for, timed_mutex::try_until, condition_variable::wait_until and a few other places, but it's not sufficient. There are other overflows in e.g. sleep_until: time_point<system_clock, minutes> end_of_time(minutes::max()); std::this_thread::sleep_until(end_of_time); This function internally compares now < end_of_time and that triggers a conversion that overflows. I'm starting to lean towards a much larger change of making chrono conversions use saturation arithmetic, so that we implicitly truncate instead of overflowing. The problem with that is that UBsan won't be able to diagnose the overflows any longer, they'll just cause silent truncation.