https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114240
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think the problem is that I just have some generic logic that assumes all sys_time specializations are a date time, and so require both a date and a time. But obviously for sys_days we only need a date. template<typename _CharT, typename _Traits, typename _Duration, typename _Alloc = allocator<_CharT>> basic_istream<_CharT, _Traits>& from_stream(basic_istream<_CharT, _Traits>& __is, const _CharT* __fmt, sys_time<_Duration>& __tp, basic_string<_CharT, _Traits, _Alloc>* __abbrev = nullptr, minutes* __offset = nullptr) { minutes __off{}; if (!__offset) __offset = &__off; using __format::_ChronoParts; auto __need = _ChronoParts::_Year | _ChronoParts::_Month | _ChronoParts::_Day | _ChronoParts::_TimeOfDay; This should depend on _Duration::period.