最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

class
<chrono>

# std::chrono::zoned_traits(C++20)

    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 ❌