clock_time_conversion
構造体
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) ID 変換。 渡されたのと同じクロックを返します。
5-6) sys_time
と utc_time
の間の変換が、変換の方向に応じて utc_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) ID 変換。 変換なし。 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