https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121179
Bug ID: 121179 Summary: When importing std, chrono calculation will cause a compilation error Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: printfne at gmail dot com Target Milestone: --- // when there are no errors // time.cppm module; #include <algorithm> #include <chrono> #include <functional> #include <mutex> #include <chrono> export module time; export class Time { std::chrono::zoned_time<std::chrono::system_clock::duration> time_; public: explicit Time(const std::string &time) { std::chrono::year_month_day ymd{}; std::chrono::hh_mm_ss<std::chrono::seconds> hms{}; // ... operate 'ymd' and 'hms' time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); } }; // command when there are no errors g++-latest -std=gnu++26 -c -fmodules time.cppm // using import std will result in a compilation error // time.cppm (just modify include to import std) export module time; import std; export class Time { std::chrono::zoned_time<std::chrono::system_clock::duration> time_; public: explicit Time(const std::string &time) { std::chrono::year_month_day ymd{}; std::chrono::hh_mm_ss<std::chrono::seconds> hms{}; // ... operate 'ymd' and 'hms' time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); } }; // compile using the same command, but you will get a compilation error g++-latest -std=gnu++26 -c -fmodules time.cppm // error message In file included from /home/hexne/gcc-latest/include/c++/16.0.0/chrono:3354, from /home/hexne/gcc-latest/include/c++/16.0.0/x86_64-pc-linux-gnu/bits/stdc++.h:175, from /home/hexne/gcc-latest/include/c++/16.0.0/bits/std.cc:30, of module std, imported at time.cppm:2: /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h: In instantiation of 'static consteval std::__format::_ChronoSpec<_CharT> std::__format::__formatter_duration<_CharT>::_S_spec_for(std::__format::_ChronoParts) [with _Duration = std::chrono::duration<long int>; _CharT = char]': /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2941:37: required from 'constexpr const std::__format::_ChronoSpec<char> std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char>::__defSpec' 2940 | return __format::__formatter_duration<_CharT>:: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2941 | template _S_spec_for<_Duration>(__needed); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2944:51: required from 'constexpr std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char>::formatter()' 2944 | __format::__formatter_duration<_CharT> _M_f{__defSpec}; | ^~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/type_traits:3628:25: required from 'constexpr const bool std::is_default_constructible_v<std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char> >' 3628 | inline constexpr bool is_default_constructible_v = __is_constructible(_Tp); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:4980:3: required from 'class std::__format::_Checking_scanner<char, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1> > > >' 4980 | (is_default_constructible_v<formatter<_Args, _CharT>> && ...), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:5162:4: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2571:9: required from 'static std::string std::chrono::nonexistent_local_time::_S_make_what_str(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::string = std::__cxx11::basic_string<char>; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2565 | __os << __tp << " is in a gap between\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2566 | << local_seconds(__i.first.end.time_since_epoch()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2567 | + __i.first.offset << ' ' << __i.first.abbrev << " and\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2568 | << local_seconds(__i.second.begin.time_since_epoch()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2569 | + __i.second.offset << ' ' << __i.second.abbrev | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2570 | << " which are both equivalent to\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2571 | << __i.first.end << " UTC"; | ^~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2555:34: required from 'std::chrono::nonexistent_local_time::nonexistent_local_time(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2555 | : runtime_error(_S_make_what_str(__tp, __i)) | ~~~~~~~~~~~~~~~~^~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2608:10: required from 'void std::chrono::__throw_bad_local_time(local_time<_Duration>&, const local_info&) [with _Duration = duration<long int, std::ratio<1, 1000000000> >; local_time<_Duration> = time_point<local_t, duration<long int, std::ratio<1, 1000000000> > >]' 2608 | throw nonexistent_local_time(__tp, __i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2645:28: required from 'std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> std::chrono::time_zone::to_sys(std::chrono::local_time<_Duration>&) const [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >; typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2645 | __throw_bad_local_time(__tp, __info); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:3109:27: required from 'std::chrono::zoned_time<_Duration, _TimeZonePtr>& std::chrono::zoned_time<_Duration, _TimeZonePtr>::operator=(std::chrono::local_time<_Duration>&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _TimeZonePtr = const std::chrono::time_zone*; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 3109 | _M_tp = _M_zone->to_sys(__lt); | ~~~~~~~~~~~~~~~^~~~~~ time.cppm:13:151: required from here 13 | time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); | ^ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1890:38: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1890 | if ((__parts & _TimeOfDay) != 0) | ~~~~~~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1893:38: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1893 | if ((__parts & _TimeOfDay) != 0) | ~~~~~~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1895:33: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1895 | if ((__parts & _Date) != 0) | ~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1897:39: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1897 | if ((__parts & _ZoneAbbrev) != 0) | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h: In instantiation of 'constexpr const std::__format::_ChronoSpec<char> std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char>::__defSpec': /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2944:51: required from 'constexpr std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char>::formatter()' 2944 | __format::__formatter_duration<_CharT> _M_f{__defSpec}; | ^~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/type_traits:3628:25: required from 'constexpr const bool std::is_default_constructible_v<std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char> >' 3628 | inline constexpr bool is_default_constructible_v = __is_constructible(_Tp); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:4980:3: required from 'class std::__format::_Checking_scanner<char, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1> > > >' 4980 | (is_default_constructible_v<formatter<_Args, _CharT>> && ...), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:5162:4: required from 'consteval std::basic_format_string<_CharT, _Args>::basic_format_string(const _Tp&) [with _Tp = const char*; _CharT = char; _Args = {const std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1> > >&}]' 5162 | __scanner(_M_str); | ^~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:3838:42: required from 'std::basic_ostream<_CharT, _Traits>& std::chrono::operator<<(std::basic_ostream<_CharT, _Traits>&, sys_time<_Duration>&) [with _CharT = char; _Traits = std::char_traits<char>; _Duration = duration<long int>; sys_time<_Duration> = time_point<_V2::system_clock, duration<long int> >]' 3838 | __os << std::format(__os.getloc(), _GLIBCXX_WIDEN("{:L%F %T}"), __tp); | ^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2571:9: required from 'static std::string std::chrono::nonexistent_local_time::_S_make_what_str(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::string = std::__cxx11::basic_string<char>; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2565 | __os << __tp << " is in a gap between\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2566 | << local_seconds(__i.first.end.time_since_epoch()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2567 | + __i.first.offset << ' ' << __i.first.abbrev << " and\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2568 | << local_seconds(__i.second.begin.time_since_epoch()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2569 | + __i.second.offset << ' ' << __i.second.abbrev | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2570 | << " which are both equivalent to\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2571 | << __i.first.end << " UTC"; | ^~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2555:34: required from 'std::chrono::nonexistent_local_time::nonexistent_local_time(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2555 | : runtime_error(_S_make_what_str(__tp, __i)) | ~~~~~~~~~~~~~~~~^~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2608:10: required from 'void std::chrono::__throw_bad_local_time(local_time<_Duration>&, const local_info&) [with _Duration = duration<long int, std::ratio<1, 1000000000> >; local_time<_Duration> = time_point<local_t, duration<long int, std::ratio<1, 1000000000> > >]' 2608 | throw nonexistent_local_time(__tp, __i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2645:28: required from 'std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> std::chrono::time_zone::to_sys(std::chrono::local_time<_Duration>&) const [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >; typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2645 | __throw_bad_local_time(__tp, __info); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:3109:27: required from 'std::chrono::zoned_time<_Duration, _TimeZonePtr>& std::chrono::zoned_time<_Duration, _TimeZonePtr>::operator=(std::chrono::local_time<_Duration>&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _TimeZonePtr = const std::chrono::time_zone*; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 3109 | _M_tp = _M_zone->to_sys(__lt); | ~~~~~~~~~~~~~~~^~~~~~ time.cppm:13:151: required from here 13 | time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); | ^ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2942:3: in 'constexpr' expansion of '<lambda closure object>std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char>::<lambda()>().std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int> >, char>::<lambda()>()' /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2941:51: error: 'static consteval std::__format::_ChronoSpec<_CharT> std::__format::__formatter_duration<_CharT>::_S_spec_for(std::__format::_ChronoParts) [with _Duration = std::chrono::duration<long int>; _CharT = char]' called in a constant expression 2940 | return __format::__formatter_duration<_CharT>:: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2941 | template _S_spec_for<_Duration>(__needed); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h: In instantiation of 'std::basic_ostream<_CharT, _Traits>& std::chrono::operator<<(std::basic_ostream<_CharT, _Traits>&, sys_time<_Duration>&) [with _CharT = char; _Traits = std::char_traits<char>; _Duration = duration<long int>; sys_time<_Duration> = time_point<_V2::system_clock, duration<long int> >]': /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2571:9: required from 'static std::string std::chrono::nonexistent_local_time::_S_make_what_str(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::string = std::__cxx11::basic_string<char>; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2565 | __os << __tp << " is in a gap between\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2566 | << local_seconds(__i.first.end.time_since_epoch()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2567 | + __i.first.offset << ' ' << __i.first.abbrev << " and\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2568 | << local_seconds(__i.second.begin.time_since_epoch()) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2569 | + __i.second.offset << ' ' << __i.second.abbrev | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2570 | << " which are both equivalent to\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2571 | << __i.first.end << " UTC"; | ^~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2555:34: required from 'std::chrono::nonexistent_local_time::nonexistent_local_time(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2555 | : runtime_error(_S_make_what_str(__tp, __i)) | ~~~~~~~~~~~~~~~~^~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2608:10: required from 'void std::chrono::__throw_bad_local_time(local_time<_Duration>&, const local_info&) [with _Duration = duration<long int, std::ratio<1, 1000000000> >; local_time<_Duration> = time_point<local_t, duration<long int, std::ratio<1, 1000000000> > >]' 2608 | throw nonexistent_local_time(__tp, __i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2645:28: required from 'std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> std::chrono::time_zone::to_sys(std::chrono::local_time<_Duration>&) const [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >; typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2645 | __throw_bad_local_time(__tp, __info); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:3109:27: required from 'std::chrono::zoned_time<_Duration, _TimeZonePtr>& std::chrono::zoned_time<_Duration, _TimeZonePtr>::operator=(std::chrono::local_time<_Duration>&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _TimeZonePtr = const std::chrono::time_zone*; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 3109 | _M_tp = _M_zone->to_sys(__lt); | ~~~~~~~~~~~~~~~^~~~~~ time.cppm:13:151: required from here 13 | time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); | ^ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:3838:42: error: call to consteval function 'std::basic_format_string<char, const std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1> > >&>(std::__format::_Widen<char>(((const char*)"{:L%F %T}"), ((const wchar_t*)"{\000\000\000:\000\000\000L\000\000\000%\000\000\000F\000\000\000 \000\000\000%\000\000\000T\000\000\000}\000\000\000\000\000\000")))' is not a constant expression 3838 | __os << std::format(__os.getloc(), _GLIBCXX_WIDEN("{:L%F %T}"), __tp); | ^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h: In instantiation of 'static consteval std::__format::_ChronoSpec<_CharT> std::__format::__formatter_duration<_CharT>::_S_spec_for(std::__format::_ChronoParts) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _CharT = char]': /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2941:37: required from 'constexpr const std::__format::_ChronoSpec<char> std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char>::__defSpec' 2940 | return __format::__formatter_duration<_CharT>:: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2941 | template _S_spec_for<_Duration>(__needed); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2944:51: required from 'constexpr std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char>::formatter()' 2944 | __format::__formatter_duration<_CharT> _M_f{__defSpec}; | ^~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/type_traits:3628:25: required from 'constexpr const bool std::is_default_constructible_v<std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char> >' 3628 | inline constexpr bool is_default_constructible_v = __is_constructible(_Tp); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:4980:3: required from 'class std::__format::_Checking_scanner<char, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > > >' 4980 | (is_default_constructible_v<formatter<_Args, _CharT>> && ...), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:5162:4: required from 'consteval std::basic_format_string<_CharT, _Args>::basic_format_string(const _Tp&) [with _Tp = const char*; _CharT = char; _Args = {const std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >&}]' 5162 | __scanner(_M_str); | ^~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:3838:42: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2565:9: required from 'static std::string std::chrono::nonexistent_local_time::_S_make_what_str(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::string = std::__cxx11::basic_string<char>; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2565 | __os << __tp << " is in a gap between\n" | ~~~~~^~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2555:34: required from 'std::chrono::nonexistent_local_time::nonexistent_local_time(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2555 | : runtime_error(_S_make_what_str(__tp, __i)) | ~~~~~~~~~~~~~~~~^~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2608:10: required from 'void std::chrono::__throw_bad_local_time(local_time<_Duration>&, const local_info&) [with _Duration = duration<long int, std::ratio<1, 1000000000> >; local_time<_Duration> = time_point<local_t, duration<long int, std::ratio<1, 1000000000> > >]' 2608 | throw nonexistent_local_time(__tp, __i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2645:28: required from 'std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> std::chrono::time_zone::to_sys(std::chrono::local_time<_Duration>&) const [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >; typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2645 | __throw_bad_local_time(__tp, __info); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:3109:27: required from 'std::chrono::zoned_time<_Duration, _TimeZonePtr>& std::chrono::zoned_time<_Duration, _TimeZonePtr>::operator=(std::chrono::local_time<_Duration>&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _TimeZonePtr = const std::chrono::time_zone*; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 3109 | _M_tp = _M_zone->to_sys(__lt); | ~~~~~~~~~~~~~~~^~~~~~ time.cppm:13:151: required from here 13 | time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); | ^ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1890:38: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1890 | if ((__parts & _TimeOfDay) != 0) | ~~~~~~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1893:38: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1893 | if ((__parts & _TimeOfDay) != 0) | ~~~~~~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1895:33: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1895 | if ((__parts & _Date) != 0) | ~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:1897:39: error: no match for 'operator!=' (operand types are 'std::__format::_ChronoParts' and 'int') 1897 | if ((__parts & _ZoneAbbrev) != 0) | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h: In instantiation of 'constexpr const std::__format::_ChronoSpec<char> std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char>::__defSpec': /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2944:51: required from 'constexpr std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char>::formatter()' 2944 | __format::__formatter_duration<_CharT> _M_f{__defSpec}; | ^~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/type_traits:3628:25: required from 'constexpr const bool std::is_default_constructible_v<std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char> >' 3628 | inline constexpr bool is_default_constructible_v = __is_constructible(_Tp); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:4980:3: required from 'class std::__format::_Checking_scanner<char, std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > > >' 4980 | (is_default_constructible_v<formatter<_Args, _CharT>> && ...), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/format:5162:4: required from 'consteval std::basic_format_string<_CharT, _Args>::basic_format_string(const _Tp&) [with _Tp = const char*; _CharT = char; _Args = {const std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >&}]' 5162 | __scanner(_M_str); | ^~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:3838:42: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2565:9: required from 'static std::string std::chrono::nonexistent_local_time::_S_make_what_str(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::string = std::__cxx11::basic_string<char>; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2565 | __os << __tp << " is in a gap between\n" | ~~~~~^~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2555:34: required from 'std::chrono::nonexistent_local_time::nonexistent_local_time(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2555 | : runtime_error(_S_make_what_str(__tp, __i)) | ~~~~~~~~~~~~~~~~^~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2608:10: required from 'void std::chrono::__throw_bad_local_time(local_time<_Duration>&, const local_info&) [with _Duration = duration<long int, std::ratio<1, 1000000000> >; local_time<_Duration> = time_point<local_t, duration<long int, std::ratio<1, 1000000000> > >]' 2608 | throw nonexistent_local_time(__tp, __i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2645:28: required from 'std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> std::chrono::time_zone::to_sys(std::chrono::local_time<_Duration>&) const [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >; typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2645 | __throw_bad_local_time(__tp, __info); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:3109:27: required from 'std::chrono::zoned_time<_Duration, _TimeZonePtr>& std::chrono::zoned_time<_Duration, _TimeZonePtr>::operator=(std::chrono::local_time<_Duration>&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _TimeZonePtr = const std::chrono::time_zone*; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 3109 | _M_tp = _M_zone->to_sys(__lt); | ~~~~~~~~~~~~~~~^~~~~~ time.cppm:13:151: required from here 13 | time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); | ^ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2942:3: in 'constexpr' expansion of '<lambda closure object>std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char>::<lambda()>().std::formatter<std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >, char>::<lambda()>()' /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:2941:51: error: 'static consteval std::__format::_ChronoSpec<_CharT> std::__format::__formatter_duration<_CharT>::_S_spec_for(std::__format::_ChronoParts) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _CharT = char]' called in a constant expression 2940 | return __format::__formatter_duration<_CharT>:: | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2941 | template _S_spec_for<_Duration>(__needed); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h: In instantiation of 'std::basic_ostream<_CharT, _Traits>& std::chrono::operator<<(std::basic_ostream<_CharT, _Traits>&, sys_time<_Duration>&) [with _CharT = char; _Traits = std::char_traits<char>; _Duration = duration<long int, std::ratio<1, 1000000000> >; sys_time<_Duration> = time_point<_V2::system_clock, duration<long int, std::ratio<1, 1000000000> > >]': /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:4018:12: required from 'std::basic_ostream<_CharT, _Traits>& std::chrono::operator<<(std::basic_ostream<_CharT, _Traits>&, local_time<_Duration>&) [with _CharT = char; _Traits = std::char_traits<char>; _Duration = duration<long int, std::ratio<1, 1000000000> >; local_time<_Duration> = time_point<local_t, duration<long int, std::ratio<1, 1000000000> > >]' 4018 | __os << sys_time<_Duration>{__lt.time_since_epoch()}; | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2565:9: required from 'static std::string std::chrono::nonexistent_local_time::_S_make_what_str(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::string = std::__cxx11::basic_string<char>; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2565 | __os << __tp << " is in a gap between\n" | ~~~~~^~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2555:34: required from 'std::chrono::nonexistent_local_time::nonexistent_local_time(std::chrono::local_time<_Duration>&, const std::chrono::local_info&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2555 | : runtime_error(_S_make_what_str(__tp, __i)) | ~~~~~~~~~~~~~~~~^~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2608:10: required from 'void std::chrono::__throw_bad_local_time(local_time<_Duration>&, const local_info&) [with _Duration = duration<long int, std::ratio<1, 1000000000> >; local_time<_Duration> = time_point<local_t, duration<long int, std::ratio<1, 1000000000> > >]' 2608 | throw nonexistent_local_time(__tp, __i); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:2645:28: required from 'std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> std::chrono::time_zone::to_sys(std::chrono::local_time<_Duration>&) const [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::sys_time<typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type> = std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >; typename std::common_type<_Dur, std::chrono::duration<long int, std::ratio<1, 1> > >::type = std::chrono::duration<long int, std::ratio<1, 1000000000> >; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 2645 | __throw_bad_local_time(__tp, __info); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /home/hexne/gcc-latest/include/c++/16.0.0/chrono:3109:27: required from 'std::chrono::zoned_time<_Duration, _TimeZonePtr>& std::chrono::zoned_time<_Duration, _TimeZonePtr>::operator=(std::chrono::local_time<_Duration>&) [with _Duration = std::chrono::duration<long int, std::ratio<1, 1000000000> >; _TimeZonePtr = const std::chrono::time_zone*; std::chrono::local_time<_Duration> = std::chrono::time_point<std::chrono::local_t, std::chrono::duration<long int, std::ratio<1, 1000000000> > >]' 3109 | _M_tp = _M_zone->to_sys(__lt); | ~~~~~~~~~~~~~~~^~~~~~ time.cppm:13:151: required from here 13 | time_ = typename std::chrono::local_time<std::chrono::seconds>::time_point(std::chrono::local_days(ymd).time_since_epoch() + hms.to_duration()); | ^ /home/hexne/gcc-latest/include/c++/16.0.0/bits/chrono_io.h:3838:42: error: call to consteval function 'std::basic_format_string<char, const std::chrono::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1, 1000000000> > >&>(std::__format::_Widen<char>(((const char*)"{:L%F %T}"), ((const wchar_t*)"{\000\000\000:\000\000\000L\000\000\000%\000\000\000F\000\000\000 \000\000\000%\000\000\000T\000\000\000}\000\000\000\000\000\000")))' is not a constant expression 3838 | __os << std::format(__os.getloc(), _GLIBCXX_WIDEN("{:L%F %T}"), __tp); | ^~~~~~~~~~~~~~