名前空間
変種
操作

std::chrono::clock_time_conversion

From cppreference.com
< cpp‎ | chrono
 
 
 
ヘッダー <chrono> で定義
template< class Dest, class Source >
struct clock_time_conversion {};
(C++20以降)

std::chrono::clock_time_conversion は、Source クロックの std::chrono::time_pointDest クロックの std::chrono::time_point に変換する方法を指定するトレイトです。これは、Source クロックの std::chrono::time_point<Source, Duration> 型の引数を受け取り、同等の時刻を表す Dest クロックの std::chrono::time_point<Dest, OtherDuration> 型の値を返す、const 呼び出し可能な operator() を提供することによって行われます。返される time_point の継続時間は、各特殊化で異なる方法でソースの継続時間から計算されます。clock_time_conversion は通常、std::chrono::clock_cast を介して間接的にのみ使用されます。

テンプレートパラメータの少なくとも1つがユーザー定義クロック型である場合、プログラムは 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以降)
1-3) 同値変換: operator() は引数のコピーを返します。
4,5) std::chrono::sys_timestd::chrono::utc_time の間の変換: operator() は、それぞれ std::chrono::utc_clock::to_sysstd::chrono::utc_clock::from_sys を呼び出します。
6,7) Clockfrom_sys および to_sys をサポートする場合の std::chrono::sys_time との間の変換: operator() は、それぞれ Clock::to_sys および Clock::from_sys を呼び出します。
8,9) Clockfrom_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>

    operator()( const std::chrono::time_point<Clock, Duration>& t ) const;
(1) (特殊化のメンバ (1))
template< class Duration >

std::chrono::sys_time<Duration>

    operator()( const std::chrono::sys_time<Duration> & t ) const;
(2) (特殊化のメンバ (2))
template< class Duration >

std::chrono::utc_time<Duration>

    operator()( const std::chrono::utc_time<Duration>& t ) const;
(3) (特殊化のメンバ (3))
template< class Duration >

std::chrono::sys_time<Duration>

    operator()( const std::chrono::utc_time<Duration>& t ) const;
(4) (特殊化のメンバ (4))
template< class Duration >

std::chrono::utc_time<Duration>

    operator()( const std::chrono::sys_time<Duration>& t ) const;
(5) (特殊化のメンバ (5))
template< class Duration >

auto operator()( const std::chrono::sys_time<Duration>& t ) const

    -> decltype(Clock::from_sys(t));
(6) (特殊化のメンバ (6))
template< class Duration >

auto operator()( const std::chrono::time_point<SourceClock, Duration>& t ) const

    -> decltype(Clock::to_sys(t));
(7) (特殊化のメンバ (7))
template< class Duration >

auto operator()( const std::chrono::utc_time<Duration>& t ) const

    -> decltype(Clock::from_utc(t));
(8) (特殊化のメンバ (8))
template< class Duration >

auto operator()( const std::chrono::time_point<Clock, Duration>& t ) const

    -> decltype(Clock::to_utc(t));
(9) (特殊化のメンバ (9))

引数の std::chrono::time_point を宛先クロックに変換します。

1-3) 同値変換。t を変更せずに返します。
4) std::chrono::utc_clock::to_sys(t) を返します。
5) std::chrono::utc_clock::from_sys(t) を返します。
6) Clock::from_sys(t) を返します。このオーバーロードは、式 Clock::from_sys(t) がwell-formedな場合にのみ、オーバーロード解決に参加します。式 Clock::from_sys(t)std::chrono::time_point<Clock, Duration> を返さない場合、プログラムはill-formedとなります。ここで Durationstd::chrono::duration の有効な特殊化です。
7) Clock::to_sys(t) を返します。このオーバーロードは、式 Clock::to_sys(t) がwell-formedな場合にのみ、オーバーロード解決に参加します。式 Clock::to_sys(t)std::chrono::sys_time<Duration> を返さない場合、プログラムはill-formedとなります。ここで Durationstd::chrono::duration の有効な特殊化です。
8) Clock::from_utc(t) を返します。このオーバーロードは、式 Clock::from_utc(t) がwell-formedな場合にのみ、オーバーロード解決に参加します。式 Clock::from_utc(t)std::chrono::time_point<Clock, Duration> を返さない場合、プログラムはill-formedとなります。ここで Durationstd::chrono::duration の有効な特殊化です。
9) Clock::to_utc(t) を返します。このオーバーロードは、式 Clock::to_utc(t) がwell-formedな場合にのみ、オーバーロード解決に参加します。式 Clock::to_utc(t)std::chrono::utc_time<Duration> を返さない場合、プログラムはill-formedとなります。ここで Durationstd::chrono::duration の有効な特殊化です。

パラメータ

t - 変換する time_point

戻り値

上記で説明された変換の結果

1-3) t
6) Clock::from_sys(t)
7) Clock::to_sys(t)
8) Clock::from_utc(t)
9) Clock::to_utc(t)

[編集] 関連項目

あるクロックの時間点を別のクロックの時間点に変換する
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)