yohhoyの日記

技術的メモをしていきたい日記

C++標準ライブラリの時計(Clock)

C++2a(C++20)標準ライブラリ <chrono> ヘッダに追加される 時計(Clock) クラス一覧。いずれもstd::chrono名前空間に属する。

Clock 概要 基点(epoch) うるう秒
system_clock システムクロック[C++11] 1970-01-01 00:00:00 UTC 除外
utc_clock 協定世界時(UTC)クロック 1970-01-01 00:00:00 UTC 含める
tai_clock 国際原子時(TAI)クロック 1958-01-01 00:00:00 TAI*1 挿入なし
gps_clock GPSクロック 1980-01 第1日曜 00:00:00 UTC 挿入なし
file_clock ファイルシステムクロック 未規定(unspecified)
steady_clock 時間逆行しないクロック[C++11]
high_resolution_clock 高分解能クロック[C++11]

表中[C++11]はC++11標準ライブラリ時点で追加されたクラスを、「−」はC++2aライブラリ仕様上の規定なしを表す。TAIクロックとGPSクロックは、UTCうるう秒(leap second)が挿入されるたびに1秒先行していく。*2

また “型TがClock要件を満たすか否か” を判定するメタ関数std::chrono::is_clock<T>, std::chrono::is_clock_v<T>もあわせて追加される。

関連URL

*1:1958-01-01 00:00:00 TAI == 1957-12-31 23:59:50 UTC

*2:2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI, 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS