std::chrono::clock_time_conversion
在标头 <chrono> 定义
|
||
template<class Dest, class Source> struct clock_time_conversion { }; |
(C++20 起) | |
std::chrono::clock_time_conversion
是特性类,指定如何转换 Source
时钟的 std::chrono::time_point 到 Dest
时钟的时间点。它通过提供 const 可调用的,接受 std::chrono::time_point<Source, Duration> 类型参数并返回表示等价时间点的 std::chrono::time_point<Dest, OtherDuration> 的 operator()
进行转换。以对每个特化有所变化的方式,计算返回时间点的时长。通常只通过 std::chrono::clock_cast 间接使用 clock_time_conversion
。
程序可以特化 clock_time_conversion
,若至少一个模板形参是用户定义类型。
初等模板是空 struct 。标准定义下列特化:
template<class Clock> struct clock_time_conversion<Clock, Clock>; |
(1) | (C++20 起) |
template<> struct clock_time_conversion<std::chrono::system_clock, std::chrono::system_clock>; |
(2) | (C++20 起) |
template<> struct clock_time_conversion<std::chrono::utc_clock, std::chrono::utc_clock>; |
(3) | (C++20 起) |
template<> struct clock_time_conversion<std::chrono::system_clock, std::chrono::utc_clock>; |
(4) | (C++20 起) |
template<> struct clock_time_conversion<std::chrono::utc_clock, std::chrono::system_clock>; |
(5) | (C++20 起) |
template<class Clock> struct clock_time_conversion<Clock, std::chrono::system_clock>; |
(6) | (C++20 起) |
template<class Clock> struct clock_time_conversion<std::chrono::system_clock, Clock>; |
(7) | (C++20 起) |
template<class Clock> struct clock_time_conversion<Clock, std::chrono::utc_clock>; |
(8) | (C++20 起) |
template<class Clock> struct clock_time_conversion<std::chrono::utc_clock, Clock>; |
(9) | (C++20 起) |
operator()
返回参数的副本。operator()
分别调用 std::chrono::utc_clock::to_sys 和 std::chrono::utc_clock::from_sys 。Clock
支持 from_sys
和 to_sys
时,来自和到 std::chrono::sys_time 的转换: operator()
分别调用 Clock::to_sys 和 Clock::from_sys 。Clock
支持 from_utc
和 to_utc
时,来自和到 std::chrono::utc_time 的转换: operator()
分别调用 Clock::to_utc 和 Clock::from_utc 。成员函数
每个特化都有隐式声明的默认构造函数、复制构造函数、移动构造函数、复制赋值运算符、移动赋值运算符和析构函数。
std::chrono::clock_time_conversion::operator()
template <class Duration> std::chrono::time_point<Clock, Duration> |
(1) | (特化 (1) 的成员) |
template <class Duration> std::chrono::sys_time<Duration> |
(2) | (特化 (2) 的成员) |
template <class Duration> std::chrono::utc_time<Duration> |
(3) | (特化 (3) 的成员) |
template <class Duration> std::chrono::sys_time<Duration> |
(4) | (特化 (4) 的成员) |
template <class Duration> std::chrono::utc_time<Duration> |
(5) | (特化 (5) 的成员) |
template <class Duration> auto operator()(const std::chrono::sys_time<Duration>& t) const |
(6) | (特化 (6) 的成员) |
template <class Duration> auto operator()(const std::chrono::time_point<SourceClock, Duration>& t) const |
(7) | (特化 (7) 的成员) |
template <class Duration> auto operator()(const std::chrono::utc_time<Duration>& t) const |
(8) | (特化 (8) 的成员) |
template <class Duration> auto operator()(const std::chrono::time_point<Clock, Duration>& t) const |
(9) | (特化 (9) 的成员) |
转换参数 std::chrono::time_point 为目标时钟。
t
。Duration
是 std::chrono::duration 的某个合法特化,则程序非良构。Duration
是 std::chrono::duration 的某个合法特化,则程序非良构。Duration
是 std::chrono::duration 的某个合法特化,则程序非良构。Duration
是 std::chrono::duration 的某个合法特化,则程序非良构。参数
t | - | 要转化的时间点 |
返回值
上述的转换结果:
t
。参阅
(C++20) |
转换一个时钟的时间点为另一个 (函数模板) |