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 时钟的 std::chrono::time_point。它通过提供一个 const-callable operator() 来实现,该操作符接受类型为 std::chrono::time_point<Source, Duration> 的参数,并返回一个表示等效时间点的 std::chrono::time_point<Dest, OtherDuration>。返回时间点的 duration 是根据源 duration 计算的,其方式因每个特化而异。clock_time_conversion 通常仅通过 std::chrono::clock_cast 间接使用。
如果至少有一个模板参数是用户定义的时钟类型,程序可以特化 clock_time_conversion。
主模板是一个空结构体。标准定义了以下特化:
| 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 | - | 要转换的时间点 |
返回值
如上所述的转换结果
[编辑] 参阅
| (C++20) |
将一个时钟的时间点转换为另一个时钟的时间点 (函数模板) |