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);
      |                                          ^~~~~~~~~~~~~~

Reply via email to