std::chrono::zoned_time<Duration,TimeZonePtr>::zoned_time

来自cppreference.com
< cpp‎ | chrono‎ | zoned time
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)
 
 
 
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,

           std::chrono::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,

           std::chrono::choose);
(16) (C++20 起)

构造 zoned_time 对象,按照下表初始化存储的时区指针和时间点,其中 traitsstd::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) 不参与重载决议。
b)std::is_copy_constructible_v<TimeZonePtr> 为 false 则定义默认化的复制构造函数 (3) 为被删除。
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 参数,但该参数无效果。