namespace std::chrono {
template <class T> struct zoned_traits {}; // (1) C++20
template <>
struct zoned_traits<const time_zone*>; // (2) C++20
}
概要
zoned_traits
は、zoned_time<Duration, TimeZonePtr>
クラスのデフォルトコンストラクタ、およびstring_view
をとるコンストラクタのための、タイムゾーン取得を動作をカスタマイズする中間インタフェースクラスである。
標準ではtime_zone
クラスに対する特殊化が定義されるが、ユーザーが任意のタイムゾーンクラスを定義する場合は、このクラスを特殊化することで、zoned_time<Duration, TimeZonePtr>
クラスでそのタイムゾーンクラスを扱えるようになる。
静的メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
default_zone |
デフォルトのタイムゾーンを取得する | C++20 |
locate_zone |
タイムゾーン名を指定してタイムゾーンを取得する | C++20 |
例
#include <cassert>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
auto now = chrono::system_clock::now();
// zoned_traits<const time_zone*>::default_zone()で取得したタイムゾーンが使用される
chrono::zoned_time zt1{};
assert(zt1.get_time_zone() == chrono::locate_zone("UTC"));
// zoned_traits<const time_zone*>::locate_zone()で取得したタイムゾーンが使用される
chrono::zoned_time zt2{"Asia/Tokyo", now};
assert(zt2.get_time_zone() == chrono::locate_zone("Asia/Tokyo"));
}
出力
バージョン
言語
- C++20
処理系
- Clang: 9.0 ❌
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌