特性,指定如何將 從某個類型的時鐘轉換成 time_point 另一種時鐘,同時維護對等的時間點。
語法
// C++20
1) template<class Dest, class Source> struct clock_time_conversion {};
2) template<class Clock> struct clock_time_conversion<Clock, Clock>;
3) template<> struct clock_time_conversion<system_clock, system_clock>;
4) template<> struct clock_time_conversion<utc_clock, utc_clock>;
5) template<> struct clock_time_conversion<system_clock, utc_clock>;
6) template<> struct clock_time_conversion<utc_clock, system_clock>;
7) template<class Clock> struct clock_time_conversion<Clock, system_clock>;
8) template<class Clock> struct clock_time_conversion<system_clock, Clock>;
9) template<class Clock> struct clock_time_conversion<Clock, utc_clock>;
10) template<class Clock> struct clock_time_conversion<utc_clock, Clock>;
範本參數
Clock
要從/轉換為的時鐘類型。
Dest
要轉換成的時鐘類型。
Source
要轉換的來源時鐘類型。
特性提供下列轉換:
1) 只定義空的結構,使其能夠特製化。
2-4) 身分識別轉換。 傳回您傳入的相同時鐘。
5-6) 在和 sys_time 之間utc_timeutc_clock::to_sys轉換,或utc_clock::from_sys視轉換的方向而定。
7-8) 在與指定的時鐘之間 sys_time 轉換時,當指定的時鐘支援 to_sys 和 from_sys時,會根據轉換的方向來呼叫 Clock::to_sys 或 Clock::from_sys。
9-10) 在 與指定的時鐘之間 utc_time 轉換時,當指定的時鐘支援 from_utc 和 to_sys時,會根據轉換的方向來呼叫 Clock::to_utc 或 Clock::from_utc。
成員
| 名稱 | 描述 |
|---|---|
operator () |
將 time_point 從一個時鐘轉換成另一個時鐘。 |
備註
您通常不會直接在程式代碼中使用此特性。 轉換函式會使用它 clock_cast 。
需求
標頭:<chrono>
命名空間:std::chrono
編譯程序選項:/std:c++latest
operator()
將 time_point 從一個時鐘類型轉換成另一個時鐘類型,同時維護對等的時間點。
語法
1)
template <class Duration>
time_point<Clock, Duration> operator()(const time_point<Clock, Duration>& t) const;
2)
template <class Duration>
sys_time<Duration> operator()(const sys_time<Duration> & t) const;
3)
template <class Duration>
utc_time<Duration> operator()(const utc_time<Duration>& t) const;
4)
template <class Duration>
sys_time<Duration> operator()(const utc_time<Duration>& t) const;
5)
template <class Duration>
utc_time<Duration> operator()(const sys_time<Duration>& t) const;
參數
t
要進行轉換的 time_point。
傳回值
1-3) 身分識別轉換。 沒有轉換。
t傳回而不進行任何變更。
4) 傳回 utc_clock::to_sys(t)。
5) 傳回 utc_clock::from_sys(t)。
扣減指南
提供下列扣減指南 template <class Duration> operator():
1)
template <class Duration> auto operator()(const sys_time<Duration>& t) const
-> decltype(Clock::from_sys(t));
2)
template <class Duration> auto operator()(const time_point<SourceClock, Duration>& t) const
-> decltype(Clock::to_sys(t));
3)
template <class Duration> auto operator()(const utc_time<Duration>& t) const
-> decltype(Clock::from_utc(t));
4)
template <class Duration> auto operator()(const time_point<Clock, Duration>& t) const
-> decltype(Clock::to_utc(t));
1) 只有在支援 Clock 和 傳回 from_sys()時time_point<Clock, Duration>,才會參與多載解析。
2) 只有在支援 Clock 和 傳回 to_sys()時sys_time<Duration>,才會參與多載解析。
3) 只有在支援 Clock 和 傳回 from_utc()時time_point<Clock, Duration>,才會參與多載解析。
4) 只有在支援 Clock 和 傳回 to_utc()時utc_time<Duration>,才會參與多載解析。
範例: clock_time_conversion
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
auto sd = sys_days{ 2021y / July / 26 };
auto time = clock_time_conversion<utc_clock, system_clock>{}(sd);
std::cout << time << "\n";
return 0;
}
2021-07-26 00:00:00