std::chrono::zoned_time<Duration,TimeZonePtr>::zoned_time
< cpp | chrono | zoned time
zoned_time(); |
(1) | (C++20 起) |
zoned_time(const std::chrono::sys_time<Duration>& st); |
(2) | (C++20 起) |
zoned_time(const zoned_time& other) = default; |
(3) | (C++20 起) |
template< class Duration2 > zoned_time(const std::chrono::zoned_time<Duration2, TimeZonePtr>& other); |
(4) | (C++20 起) |
explicit zoned_time(TimeZonePtr z); |
(5) | (C++20 起) |
explicit zoned_time(std::string_view name); |
(6) | (C++20 起) |
zoned_time(TimeZonePtr z, const std::chrono::sys_time<Duration>& st); |
(7) | (C++20 起) |
zoned_time(std::string_view name, const std::chrono::sys_time<Duration>& st); |
(8) | (C++20 起) |
zoned_time(TimeZonePtr z, const std::chrono::local_time<Duration>& tp); |
(9) | (C++20 起) |
zoned_time(std::string_view name, const std::chrono::local_time<Duration>& tp); |
(10) | (C++20 起) |
zoned_time(TimeZonePtr z, const std::chrono::local_time<Duration>& tp, std::chrono::choose c); |
(11) | (C++20 起) |
zoned_time(std::string_view name, const std::chrono::local_time<Duration>& tp, std::chrono::choose c); |
(12) | (C++20 起) |
template< class Duration2, class TimeZonePtr2 > zoned_time(TimeZonePtr z, const std::chrono::zoned_time<Duration2, TimeZonePtr2>& zt); |
(13) | (C++20 起) |
template< class Duration2, class TimeZonePtr2 > zoned_time(TimeZonePtr z, const std::chrono::zoned_time<Duration2, TimeZonePtr2>& zt, choose); |
(14) | (C++20 起) |
template< class Duration2, class TimeZonePtr2 > zoned_time(std::string_view name, const std::chrono::zoned_time<Duration2, TimeZonePtr2>& zt); |
(15) | (C++20 起) |
template< class Duration2, class TimeZonePtr2 > zoned_time(std::string_view name, const std::chrono::zoned_time<Duration2, TimeZonePtr2>& zt, choose); |
(16) | (C++20 起) |
构造 zoned_time
对象,按照下表初始化存储的时区指针和时间点,其中 traits
为 std::chrono::zoned_traits<TimeZonePtr> :
重载 | 时区指针(记为 zone )
|
时间点( std::chrono::sys_time<duration> ) | 注意 |
---|---|---|---|
(1) | traits::default_zone() | 默认构造 | (a) |
(2) | st
| ||
(3) | other.get_time_zone() | other.get_sys_time() | (b) |
(4) | other.get_time_zone() | other.get_sys_time() | (e) |
(5) | std::move(z) | 默认构造 | |
(6) | traits::locate_zone(name) | (c) | |
(7) | std::move(z) | st
|
|
(8) | traits::locate_zone(name) | (c) | |
(9) | std::move(z) | zone->to_sys(tp) | (d) |
(10) | traits::locate_zone(name) | (c,d) | |
(11) | std::move(z) | zone->to_sys(tp, c) | (d) |
(12) | traits::locate_zone(name) | (c,d) | |
(13-14) | std::move(z) | zt.get_sys_time() | (e) |
(15-16) | traits::locate_zone(name) | (c,e) |
a) 若 traits::default_zone() 非良式,则指定来调用该表达式的构造函数 (1-2) 不参与重载决议。
c) 若 traits::locate_zone(name) 非良式或若该表达式不可转换成
TimeZonePtr
,则带 std::string_view 参数 name
的构造函数 (6,8,10,12,15-16) 不参与重载决议。d) 若 zone->to_sys 非良式或其结果不可转换成 std::chrono::sys_time<duration> ,则指定来调用该调用表达式的构造函数 (9-12) 不参与重载决议。
e) 若
Duration2
不可转换成 Duration
,则带模板形参 Duration2
的构造函数 (4,13-16) 不参与重载决议。若(按上述方式初始化的)时区指针不指代合法时区,则行为未定义。
注意
zoned_time
无移动构造函数,而移动它的尝试将替而用默认化的复制构造函数 (3) 进行复制。从而当 TimeZonePtr
是仅移动的类型时, zoned_time
不可移动:既不能复制亦不能移动它。
构造函数 (14,16) 接受 std::chrono::choose 参数,但该参数无效果。