std::chrono::get_tzdb_list, std::chrono::get_tzdb, std::chrono::remote_version, std::chrono::reload_tzdb
提供: cppreference.com
<tbody>
</tbody>
std::chrono::tzdb_list& get_tzdb_list(); |
(1) | (C++20以上) |
const std::chrono::tzdb& get_tzdb(); |
(2) | (C++20以上) |
std::string remote_version(); |
(3) | (C++20以上) |
const std::chrono::tzdb& reload_tzdb(); |
(4) | (C++20以上) |
これらの関数はプログラム全体のタイムゾーンデータベースへのアクセスを提供します。
1) グローバルな std::chrono::tzdb_list シングルトンを指す参照を返します。 これがデータベースへの最初のアクセスであれば、データベースを初期化します。 初期化後、データベースは単一の初期化された std::chrono::tzdb オブジェクトを保持します。 この関数はスレッドセーフです。 複数のスレッドからこの関数を並行的に呼んでもデータ競合を発生しません。
2)
tzdb_list シングルトンの保持する最初の std::chrono::tzdb オブジェクトを指す参照を返します。 std::chrono::get_tzdb_list().front() と同等です。3) 最新のリモートデータベースのバージョンを持つ文字列を返します。
4)
remote_version() != get_tzdb().version であれば、リモートデータベースを表す新しい tzdb オブジェクトを、 get_tzdb_list() によって参照される tzdb_list シングルトンの先頭にプッシュします。 いかなる参照、ポインタ、イテレータも無効化されません。 この関数を get_tzdb_list().front() や get_tzdb_list().erase_after() と並行的に呼んでもデータ競合を発生しません。例外
1) 何らかの理由で、1つ以上の有効な
tzdb を持つ tzdb_list の参照を返せない場合、 std::runtime_error。戻り値
1) グローバルな std::chrono::tzdb_list シングルトンを指す参照。
2)
std::chrono::get_tzdb_list().front()。3) 最新のリモートデータベースのバージョンを持つ文字列。
4) (この関数によって行われた更新後の)
std::chrono::get_tzdb_list().front()。