Namespaces
Variants

Standard library header <chrono> (C++11)

From ja.cppreference.net
Standard library headers

このヘッダは 日付と時間 ライブラリの一部です。

目次

Includes

(C++20)
三方比較演算子 サポート

クラス

期間
名前空間 std::chrono で定義
(C++11)
時間間隔
(クラステンプレート)
異なるティック周期を持つdurationに変換可能であることを示す
(クラステンプレート)
指定された型のティックカウントのゼロ値、最小値、最大値を構築する
(クラステンプレート)
利便性のための期間型定義
名前空間 std::chrono で定義
std::chrono::nanoseconds (C++11) 周期 std::nano を持つ期間型
std::chrono::microseconds (C++11) 期間型、Periodは std::micro
std::chrono::milliseconds (C++11) 期間型、Periodは std::milli
std::chrono::seconds (C++11) 期間型(Period = std:: ratio < 1 > )
std::chrono::minutes (C++11) 期間型、Periodは std:: ratio < 60 >
std::chrono::hours (C++11) 期間型、Periodは std:: ratio < 3600 >
std::chrono::days (C++20) 周期 std:: ratio < 86400 > を持つ期間型
std::chrono::weeks (C++20) 期間型、Periodは std:: ratio < 604800 >
std::chrono::months (C++20) 期間型、Periodは std:: ratio < 2629746 >
std::chrono::years (C++20) 期間型、Periodは std:: ratio < 31556952 >
タイムポイント
名前空間 std::chrono で定義
(C++11)
時間の一点
(クラステンプレート)
あるクロックの時間点を別のクロックに変換する方法を定義するtraitsクラス
(クラステンプレート)
クロック
名前空間 std::chrono で定義
型が Clock 要件を満たすかどうかを判定する
(クラステンプレート) (変数テンプレート)
システム全体のリアルタイムクロックからの壁時計時間
(class)
調整されることのない単調増加クロック
(class)
利用可能な最短のティック周期を持つクロック
(class)
(C++20)
Clock 協定世界時 (UTC) のためのクロック
(クラス)
(C++20)
Clock 国際原子時 (TAI) のためのクロック
(クラス)
(C++20)
Clock GPS時間用のクロック
(クラス)
(C++20)
Clock ファイル時間に使用される file time
(typedef)
(C++20)
ローカル時間を表す疑似クロック
(クラス)
カレンダー
名前空間 std::chrono で定義
(C++20)
月の 最終 日または曜日を示すタグクラス
(クラス)
(C++20)
月の日を表す
(クラス)
(C++20)
年の月を表す
(クラス)
(C++20)
グレゴリオ暦の年を表す
(クラス)
(C++20)
グレゴリオ暦における曜日を表す
(クラス)
月のn th weekday を表す
(クラス)
月の最後の weekday を表す
(クラス)
(C++20)
特定の month の特定の day を表す
(クラス)
特定の month の最終日を表す
(クラス)
特定の month のn th weekday を表す
(クラス)
特定の weekday の最後の month を表す
(クラス)
(C++20)
特定の month と特定の year を表す
(クラス)
特定の year 、 month 、および day を表す
(クラス)
特定の year と month の最終日を表す
(クラス)
特定の year と month の第n weekday を表す
(クラス)
特定の weekday と year および month の最後の曜日を表す
(クラス)
時刻
名前空間 std::chrono で定義
(C++20)
時刻を表現する
(クラステンプレート)
タイムゾーン
名前空間 std::chrono で定義
(C++20)
IANAタイムゾーンデータベース のコピーを記述する
(クラス)
(C++20)
tzdb のリンクリストを表現する
(クラス)
(C++20)
タイムゾーンを表す
(クラス)
(C++20)
特定の時点におけるタイムゾーンに関する情報を表す
(クラス)
(C++20)
ローカルタイムからUNIXタイムへの変換に関する情報を表す
(クラス)
(C++20)
曖昧なローカル時間の解決方法を選択する
(enum)
zoned_time で使用されるタイムゾーンポインタのためのtraitsクラス
(クラステンプレート)
(C++20)
タイムゾーンと時間点を表す
(クラス)
タイムゾーンの代替名を表す
(クラス)
存在しないローカルタイムを報告するためにスローされる例外
(クラス)
ローカル時間が曖昧であることを報告するためにスローされる例外
(クラス)
閏秒
名前空間 std::chrono で定義
閏秒挿入に関する情報を含む
(クラス)
閏秒挿入情報
(クラス)
特殊化
名前空間 std で定義
std::common_type トレイトを特殊化
(クラステンプレートの特殊化)
std::common_type 特性を特殊化する
(クラステンプレートの特殊化)
durationのフォーマットサポート
(クラステンプレートの特殊化)
sys_timeのフォーマットサポート
(クラステンプレートの特殊化)
utc_timeのフォーマットサポート
(クラステンプレートの特殊化)
tai_timeのフォーマットサポート tai_time
(クラステンプレートの特殊化)
gps_timeのフォーマットサポート gps_time
(クラステンプレートの特殊化)
file_timeのフォーマット対応
(クラステンプレート特殊化)
local_timeのフォーマットサポート
(クラステンプレートの特殊化)
dayのフォーマットサポート day
(クラステンプレートの特殊化)
monthのフォーマットサポート
(クラステンプレートの特殊化)
yearのフォーマットサポート
(クラステンプレートの特殊化)
weekdayのフォーマットサポート weekday
(クラステンプレートの特殊化)
weekday_indexedのフォーマットサポート weekday_indexed
(クラステンプレートの特殊化)
weekday_lastのフォーマットサポート weekday_last
(クラステンプレートの特殊化)
month_dayのフォーマットサポート
(クラステンプレートの特殊化)
month_day_lastのフォーマットサポート
(クラステンプレートの特殊化)
month_weekdayのフォーマットサポート
(クラステンプレート特殊化)
month_weekday_lastのフォーマットサポート
(クラステンプレートの特殊化)
year_monthのフォーマットサポート
(クラステンプレートの特殊化)
year_month_dayのフォーマットサポート year_month_day
(クラステンプレートの特殊化)
year_month_day_lastのフォーマットサポート year_month_day_last
(クラステンプレートの特殊化)
year_month_weekdayのフォーマットサポート year_month_weekday
(クラステンプレートの特殊化)
year_month_weekday_lastのフォーマットサポート
(クラステンプレートの特殊化)
hh_mm_ssのフォーマットサポート
(クラステンプレートの特殊化)
sys_infoのフォーマットサポート sys_info
(クラステンプレートの特殊化)
local_infoのフォーマットサポート local_info
(クラステンプレートの特殊化)
zoned_timeのフォーマットサポート
(クラステンプレートの特殊化)
std::chrono::duration のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::time_point のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::day のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::month のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::year のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::weekday のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::weekday_indexed のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::weekday_last のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::month_day のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::month_day_last のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::month_weekday のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::month_weekday_last のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::year_month のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::year_month_dayの std::chrono::year_month_day に対するハッシュサポート
(クラステンプレートの特殊化)
std::chrono::year_month_day_last のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::year_month_weekday のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::year_month_weekday_last のハッシュサポート std::chrono::year_month_weekday_last
(クラステンプレートの特殊化)
std::chrono::zoned_time のハッシュサポート
(クラステンプレートの特殊化)
std::chrono::leap_second のハッシュサポート
(クラステンプレートの特殊化)
前方宣言
ヘッダーで定義 <functional>
(C++11)
ハッシュ関数オブジェクト
(クラステンプレート)
翻訳のポイント: - HTMLタグ、属性、``タグ内のテキストは翻訳せず保持 - C++20などのC++固有の用語は翻訳せず保持 - "performs arithmetic on years" を「`year`に対する算術演算を実行する」と正確に翻訳 - "(function)" を「(関数)」と翻訳 - 元のフォーマットと構造を完全に保持

関数

期間
名前空間 std::chrono で定義
期間を引数とする算術演算を実装する
(関数テンプレート)
(C++11) (C++11) (removed in C++20) (C++11) (C++11) (C++11) (C++11) (C++20)
2つの時間間隔を比較する
(関数テンプレート)
期間を別のティック間隔に変換する
(関数テンプレート)
期間を別の期間に変換し、切り捨てを行う
(関数テンプレート)
期間を別の期間に変換し、切り上げを行う
(関数テンプレート)
期間を別の期間に変換し、最も近い値に丸め、同値の場合は偶数に丸める
(関数テンプレート)
期間の絶対値を取得する
(関数テンプレート)
タイムポイント
名前空間 std::chrono で定義
時間ポイントを含む加算および減算演算を実行する
(関数テンプレート)
(C++11) (C++11) (removed in C++20) (C++11) (C++11) (C++11) (C++11) (C++20)
2つの時間点を比較する
(関数テンプレート)
同じクロック上の異なる時間間隔を持つ別の時間点に変換する
(関数テンプレート)
time_pointを別のtime_pointに変換し、切り捨てを行う
(関数テンプレート)
time_pointを別のtime_pointに変換し、切り上げを行う
(関数テンプレート)
time_pointを別の時間単位に変換し、最も近い値に丸める(偶数丸め)
(関数テンプレート)
指定されたフォーマットに従ってストリームから sys_time を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから utc_time を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから tai_time を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから gps_time を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから file_time を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから local_time を解析する
(関数テンプレート)
(C++20)
あるクロックの時間点を別のクロックに変換する
(関数テンプレート)
カレンダー
名前空間 std::chrono で定義
2つの day 値を比較する
(関数)
2つの month 値を比較する
(関数)
2つの year 値を比較する
(関数)
(C++20)
2つの weekday 値を比較する
(関数)
(C++20)
2つの weekday_indexed 値を比較する
(関数)
(C++20)
2つの weekday_last 値を比較する
(関数)
2つの month_day 値を比較する
(関数)
2つの month_day_last 値を比較する
(関数)
(C++20)
2つの month_weekday 値を比較する
(関数)
(C++20)
2つの month_weekday_last 値を比較する
(関数)
2つの year_month 値を比較する
(関数)
2つの year_month_day 値を比較する
(関数)
2つの year_month_day_last 値を比較する
(関数)
(C++20)
2つの year_month_weekday 値を比較する
(関数)
(C++20)
2つの year_month_weekday_last 値を比較する
(関数)
日数と day の加算または減算、または2つの day 間の差を求める
(関数)
monthに対する算術演算を実行する
(関数)
yearに対する算術演算を実行する
(関数)
weekdayに対して算術演算を実行する
(関数)
year_monthに対する算術演算を実行する
(関数)
year_month_dayに年数または月数を加算または減算する
(関数)
year_month_day_lastに年数または月数を加算または減算する
(関数)
year_month_weekdayに年数または月数を加算または減算する
(関数)
year_month_weekday_lastに年数または月数を加算または減算する
(関数)
(C++20)
グレゴリオ暦の日付作成における従来の構文
(関数)
時刻
名前空間 std::chrono で定義
12時間/24時間形式の時刻を相互変換する
(関数)
タイムゾーン
名前空間 std::chrono で定義
グローバルタイムゾーンデータベース情報へのアクセスと制御
(関数)
名前を基に time_zone を検索する
(関数)
2つの time_zone オブジェクトを比較する
(関数)
(C++20)
2つの zoned_time 値を比較する
(関数テンプレート)
2つの time_zone_link オブジェクトを比較する
(関数)
閏秒
名前空間 std::chrono で定義
utc_timeオブジェクトから閏秒挿入情報を取得する
(関数テンプレート)
2つの leap_second 値、または leap_second 値と sys_time を比較する
(関数テンプレート)
I/O
名前空間 std::chrono で定義
(C++20)
durationに対するストリーム出力を実行する
(関数テンプレート)
sys_timeに対するストリーム出力を実行する
(関数テンプレート)
utc_timeに対するストリーム出力を実行する
(関数テンプレート)
tai_timeに対するストリーム出力を実行する
(関数テンプレート)
gps_timeに対するストリーム出力を実行する
(関数テンプレート)
file_timeに対するストリーム出力を実行する
(関数テンプレート)
(C++20)
dayをストリームに出力する
(関数テンプレート)
(C++20)
monthをストリームに出力する
(関数テンプレート)
(C++20)
yearをストリームに出力する
(関数テンプレート)
(C++20)
weekdayをストリームに出力する
(関数テンプレート)
(C++20)
weekday_indexedをストリームに出力する
(関数テンプレート)
(C++20)
weekday_lastをストリームに出力する
(関数テンプレート)
(C++20)
month_dayをストリームに出力する
(関数テンプレート)
(C++20)
month_day_lastをストリームに出力する
(関数テンプレート)
(C++20)
month_weekdayをストリームに出力する
(関数テンプレート)
(C++20)
month_weekday_lastをストリームに出力する
(関数テンプレート)
(C++20)
year_monthをストリームに出力する
(関数テンプレート)
(C++20)
year_month_dayをストリームに出力する
(関数テンプレート)
(C++20)
year_month_day_lastをストリームに出力する
(関数テンプレート)
(C++20)
year_month_weekdayをストリームに出力する
(関数テンプレート)
(C++20)
year_month_weekday_lastをストリームに出力する
(関数テンプレート)
(C++20)
hh_mm_ssをストリームに出力する
(関数テンプレート)
(C++20)
sys_infoをストリームに出力する
(関数テンプレート)
(C++20)
local_infoをストリームに出力する
(関数テンプレート)
(C++20)
zoned_timeをストリームに出力する
(関数テンプレート)
指定されたフォーマットに従ってストリームから day を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから month を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから year を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから weekday を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから month_day を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから year_month を解析する
(関数テンプレート)
指定されたフォーマットに従ってストリームから year_month_day を解析する
(関数テンプレート)
(C++20)
ストリームから chrono オブジェクトを解析する
(関数テンプレート)
リテラル
インライン名前空間で定義 std::literals::chrono_literals
時間を表す std::chrono::duration リテラル
(関数)
分を表す std::chrono::duration リテラル
(関数)
秒を表す std::chrono::duration リテラル
(関数)
ミリ秒を表す std::chrono::duration リテラル
(関数)
マイクロ秒を表す std::chrono::duration リテラル
(関数)
ナノ秒を表す std::chrono::duration リテラル
(関数)
月の日を表す std::chrono::day リテラル
(関数)
特定の年を表す std::chrono::year リテラル
(関数)

概要

#include <compare>
namespace std {
  namespace chrono {
    // クラステンプレート duration
    template<class Rep, class Period = ratio<1>> class duration;
    // クラステンプレート time_point
    template<class Clock, class Duration = typename Clock::duration> class time_point;
  }
  // common_type 特殊化
  template<class Rep1, class Period1, class Rep2, class Period2>
    struct common_type<chrono::duration<Rep1, Period1>,
                       chrono::duration<Rep2, Period2>>;
  template<class Clock, class Duration1, class Duration2>
    struct common_type<chrono::time_point<Clock, Duration1>,
                       chrono::time_point<Clock, Duration2>>;
  namespace chrono {
    // カスタマイゼーション特性
    template<class Rep> struct treat_as_floating_point;
    template<class Rep>
      inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value;
    template<class Rep> struct duration_values;
    template<class T> struct is_clock;
    template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;
    // 期間演算
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
        operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
        operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period, class Rep2>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator*(const duration<Rep1, Period>& d, const Rep2& s);
    template<class Rep1, class Rep2, class Period>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator*(const Rep1& s, const duration<Rep2, Period>& d);
    template<class Rep1, class Period, class Rep2>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator/(const duration<Rep1, Period>& d, const Rep2& s);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<Rep1, Rep2>
        operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period, class Rep2>
      constexpr duration<common_type_t<Rep1, Rep2>, Period>
        operator%(const duration<Rep1, Period>& d, const Rep2& s);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
        operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
    // 期間の比較
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator==(const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator< (const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator> (const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
                                const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Rep2, class Period2>
      requires /* 詳細は説明を参照 */
      constexpr auto operator<=>(const duration<Rep1, Period1>& lhs,
                                 const duration<Rep2, Period2>& rhs);
    // 変換
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration floor(const duration<Rep, Period>& d);
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration ceil(const duration<Rep, Period>& d);
    template<class ToDuration, class Rep, class Period>
      constexpr ToDuration round(const duration<Rep, Period>& d);
    // 期間 I/O
    template<class CharT, class Traits, class Rep, class Period>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os,
                   const duration<Rep, Period>& d);
    template<class CharT, class Traits, class Rep, class Period, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    duration<Rep, Period>& d,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // 便利な型定義
    using nanoseconds  = duration</* 少なくとも64ビットの符号付き整数型 */, nano>;
    using microseconds = duration</* 少なくとも55ビットの符号付き整数型 */, micro>;
    using milliseconds = duration</* 少なくとも45ビットの符号付き整数型 */, milli>;
    using seconds      = duration</* 少なくとも35ビットの符号付き整数型 */>;
    using minutes      = duration</* 少なくとも29ビットの符号付き整数型 */,
                                  ratio<  60>>;
    using hours        = duration</* 少なくとも23ビットの符号付き整数型 */,
                                  ratio<3600>>;
    using days         = duration</* 少なくとも25ビットの符号付き整数型 */,
                                  ratio_multiply<ratio<24>, hours::period>>;
    using weeks        = duration</* 少なくとも22ビットの符号付き整数型 */,
                                  ratio_multiply<ratio<7>, days::period>>;
    using years        = duration</* 少なくとも17ビットの符号付き整数型 */,
                                  ratio_multiply<ratio<146097, 400>, days::period>>;
    using months       = duration</* 少なくとも20ビットの符号付き整数型 */,
                                  ratio_divide<years::period, ratio<12>>>;
    // time_point 演算
    template<class Clock, class Duration1, class Rep2, class Period2>
      constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
        operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Rep1, class Period1, class Clock, class Duration2>
      constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
        operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Rep2, class Period2>
      constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
        operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
    template<class Clock, class Duration1, class Duration2>
      constexpr common_type_t<Duration1, Duration2>
        operator-(const time_point<Clock, Duration1>& lhs,
                  const time_point<Clock, Duration2>& rhs);
    // time_point 比較
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator==(const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator< (const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator> (const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator<=(const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, class Duration2>
       constexpr bool operator>=(const time_point<Clock, Duration1>& lhs,
                                 const time_point<Clock, Duration2>& rhs);
    template<class Clock, class Duration1, three_way_comparable_with<Duration1> Duration2>
       constexpr auto operator<=>(const time_point<Clock, Duration1>& lhs,
                                  const time_point<Clock, Duration2>& rhs);
    // 変換
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration>
        time_point_cast(const time_point<Clock, Duration>& t);
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration> floor(const time_point<Clock, Duration>& tp);
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration> ceil(const time_point<Clock, Duration>& tp);
    template<class ToDuration, class Clock, class Duration>
      constexpr time_point<Clock, ToDuration> round(const time_point<Clock, Duration>& tp);
    // 特殊化アルゴリズム
    template<class Rep, class Period>
      constexpr duration<Rep, Period> abs(duration<Rep, Period> d);
    // class system_clock
    class system_clock;
    template<class Duration>
      using sys_time  = time_point<system_clock, Duration>;
    using sys_seconds = sys_time<seconds>;
    using sys_days    = sys_time<days>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp);
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const sys_days& dp);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    sys_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class utc_clock
    class utc_clock;
    template<class Duration>
      using utc_time  = time_point<utc_clock, Duration>;
    using utc_seconds = utc_time<seconds>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const utc_time<Duration>& t);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    utc_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    struct leap_second_info;
    template<class Duration>
      leap_second_info get_leap_second_info(const utc_time<Duration>& ut);
    // class tai_clock
    class tai_clock;
    template<class Duration>
      using tai_time  = time_point<tai_clock, Duration>;
    using tai_seconds = tai_time<seconds>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const tai_time<Duration>& t);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    tai_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class gps_clock
    class gps_clock;
    template<class Duration>
      using gps_time  = time_point<gps_clock, Duration>;
    using gps_seconds = gps_time<seconds>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const gps_time<Duration>& t);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    gps_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // type file_clock
    using file_clock = /* 詳細は説明を参照 */;
    template<class Duration>
      using file_time = time_point<file_clock, Duration>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const file_time<Duration>& tp);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    file_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class steady_clock
    class steady_clock;
    // class high_resolution_clock
    class high_resolution_clock;
    // ローカルタイム
    struct local_t {};
    template<class Duration>
      using local_time  = time_point<local_t, Duration>;
    using local_seconds = local_time<seconds>;
    using local_days    = local_time<days>;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const local_time<Duration>& tp);
    template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    local_time<Duration>& tp,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // time_point 変換
    template<class DestClock, class SourceClock>
      struct clock_time_conversion;
    template<class DestClock, class SourceClock, class Duration>
      auto clock_cast(const time_point<SourceClock, Duration>& t);
    // class last_spec
    struct last_spec;
    // class day
    class day;
    constexpr bool operator==(const day& x, const day& y) noexcept;
    constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
    constexpr day  operator+(const day&  x, const days& y) noexcept;
    constexpr day  operator+(const days& x, const day&  y) noexcept;
    constexpr day  operator-(const day&  x, const days& y) noexcept;
    constexpr days operator-(const day&  x, const day&  y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const day& d);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    day& d, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class month
    class month;
    constexpr bool operator==(const month& x, const month& y) noexcept;
    constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
    constexpr month  operator+(const month&  x, const months& y) noexcept;
    constexpr month  operator+(const months& x,  const month& y) noexcept;
    constexpr month  operator-(const month&  x, const months& y) noexcept;
    constexpr months operator-(const month&  x,  const month& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month& m);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    month& m, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class year
    class year;
    constexpr bool operator==(const year& x, const year& y) noexcept;
    constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
    constexpr year  operator+(const year&  x, const years& y) noexcept;
    constexpr year  operator+(const years& x, const year&  y) noexcept;
    constexpr year  operator-(const year&  x, const years& y) noexcept;
    constexpr years operator-(const year&  x, const year&  y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year& y);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    year& y, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class weekday
    class weekday;
    constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
    constexpr weekday operator+(const weekday& x, const days&    y) noexcept;
    constexpr weekday operator+(const days&    x, const weekday& y) noexcept;
    constexpr weekday operator-(const weekday& x, const days&    y) noexcept;
    constexpr days    operator-(const weekday& x, const weekday& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const weekday& wd);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    weekday& wd, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class weekday_indexed
    class weekday_indexed;
    constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const weekday_indexed& wdi);
    // class weekday_last
    class weekday_last;
    constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const weekday_last& wdl);
    // class month_day
    class month_day;
    constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
    constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_day& md);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    month_day& md, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class month_day_last
    class month_day_last;
    constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
    constexpr strong_ordering operator<=>(const month_day_last& x,
                                          const month_day_last& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_day_last& mdl);
    // class month_weekday
    class month_weekday;
    constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_weekday& mwd);
    // class month_weekday_last
    class month_weekday_last;
    constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const month_weekday_last& mwdl);
    // class year_month
    class year_month;
    constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
    constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
    constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
    constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
    constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
    constexpr months operator-(const year_month& x, const year_month& y) noexcept;
    constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
    constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
    constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month& ym);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    year_month& ym, basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class year_month_day
    class year_month_day;
    constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
    constexpr strong_ordering operator<=>(const year_month_day& x,
                                          const year_month_day& y) noexcept;
    constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
    constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
    constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
    constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
    constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
    constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_day& ymd);
    template<class CharT, class Traits, class Alloc = allocator<CharT>>
      basic_istream<CharT, Traits>&
        from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt,
                    year_month_day& ymd,
                    basic_string<CharT, Traits, Alloc>* abbrev = nullptr,
                    minutes* offset = nullptr);
    // class year_month_day_last
    class year_month_day_last;
    constexpr bool operator==(const year_month_day_last& x,
                              const year_month_day_last& y) noexcept;
    constexpr strong_ordering operator<=>(const year_month_day_last& x,
                                          const year_month_day_last& y) noexcept;
    constexpr year_month_day_last
      operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
    constexpr year_month_day_last
      operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
    constexpr year_month_day_last
      operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
    constexpr year_month_day_last
      operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
    constexpr year_month_day_last
      operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
    constexpr year_month_day_last
      operator-(const year_month_day_last& ymdl, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_day_last& ymdl);
    // class year_month_weekday
    class year_month_weekday;
    constexpr bool operator==(const year_month_weekday& x,
                              const year_month_weekday& y) noexcept;
    constexpr year_month_weekday
      operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
    constexpr year_month_weekday
      operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
    constexpr year_month_weekday
      operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
    constexpr year_month_weekday
      operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
    constexpr year_month_weekday
      operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
    constexpr year_month_weekday
      operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_weekday& ymwdi);
    // class year_month_weekday_last
    class year_month_weekday_last;
    constexpr bool operator==(const year_month_weekday_last& x,
                              const year_month_weekday_last& y) noexcept;
    constexpr year_month_weekday_last
      operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
    constexpr year_month_weekday_last
      operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
    constexpr year_month_weekday_last
      operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
    constexpr year_month_weekday_last
      operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
    constexpr year_month_weekday_last
      operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
    constexpr year_month_weekday_last
      operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const year_month_weekday_last& ymwdl);
    // 市民暦の従来の構文演算子
    constexpr year_month
      operator/(const year& y, const month& m) noexcept;
    constexpr year_month
      operator/(const year& y, int m) noexcept;
    constexpr month_day
      operator/(const month& m, const day& d) noexcept;
    constexpr month_day
      operator/(const month& m, int d) noexcept;
    constexpr month_day
      operator/(int m, const day& d) noexcept;
    constexpr month_day
      operator/(const day& d, const month& m) noexcept;
    constexpr month_day
      operator/(const day& d, int m) noexcept;
    constexpr month_day_last
      operator/(const month& m, last_spec) noexcept;
    constexpr month_day_last
      operator/(int m, last_spec) noexcept;
    constexpr month_day_last
      operator/(last_spec, const month& m) noexcept;
    constexpr month_day_last
      operator/(last_spec, int m) noexcept;
    constexpr month_weekday
      operator/(const month& m, const weekday_indexed& wdi) noexcept;
    constexpr month_weekday
      operator/(int m, const weekday_indexed& wdi) noexcept;
    constexpr month_weekday
      operator/(const weekday_indexed& wdi, const month& m) noexcept;
    constexpr month_weekday
      operator/(const weekday_indexed& wdi, int m) noexcept;
    constexpr month_weekday_last
      operator/(const month& m, const weekday_last& wdl) noexcept;
    constexpr month_weekday_last
      operator/(int m, const weekday_last& wdl) noexcept;
    constexpr month_weekday_last
      operator/(const weekday_last& wdl, const month& m) noexcept;
    constexpr month_weekday_last
      operator/(const weekday_last& wdl, int m) noexcept;
    constexpr year_month_day
      operator/(const year_month& ym, const day& d) noexcept;
    constexpr year_month_day
      operator/(const year_month& ym, int d) noexcept;
    constexpr year_month_day
      operator/(const year& y, const month_day& md) noexcept;
    constexpr year_month_day
      operator/(int y, const month_day& md) noexcept;
    constexpr year_month_day
      operator/(const month_day& md, const year& y) noexcept;
    constexpr year_month_day
      operator/(const month_day& md, int y) noexcept;
    constexpr year_month_day_last
      operator/(const year_month& ym, last_spec) noexcept;
    constexpr year_month_day_last
      operator/(const year& y, const month_day_last& mdl) noexcept;
    constexpr year_month_day_last
      operator/(int y, const month_day_last& mdl) noexcept;
    constexpr year_month_day_last
      operator/(const month_day_last& mdl, const year& y) noexcept;
    constexpr year_month_day_last
      operator/(const month_day_last& mdl, int y) noexcept;
    constexpr year_month_weekday
      operator/(const year_month& ym, const weekday_indexed& wdi) noexcept;
    constexpr year_month_weekday
      operator/(const year& y, const month_weekday& mwd) noexcept;
    constexpr year_month_weekday
      operator/(int y, const month_weekday& mwd) noexcept;
    constexpr year_month_weekday
      operator/(const month_weekday& mwd, const year& y) noexcept;
    constexpr year_month_weekday
      operator/(const month_weekday& mwd, int y) noexcept;
    constexpr year_month_weekday_last
      operator/(const year_month& ym, const weekday_last& wdl) noexcept;
    constexpr year_month_weekday_last
      operator/(const year& y, const month_weekday_last& mwdl) noexcept;
    constexpr year_month_weekday_last
      operator/(int y, const month_weekday_last& mwdl) noexcept;
    constexpr year_month_weekday_last
      operator/(const month_weekday_last& mwdl, const year& y) noexcept;
    constexpr year_month_weekday_last
      operator/(const month_weekday_last& mwdl, int y) noexcept;
    // クラステンプレート hh_mm_ss
    template<class Duration> class hh_mm_ss;
    template<class CharT, class Traits, class Duration>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const hh_mm_ss<Duration>& hms);
    // 12/24時間関数
    constexpr bool is_am(const hours& h) noexcept;
    constexpr bool is_pm(const hours& h) noexcept;
    constexpr hours make12(const hours& h) noexcept;
    constexpr hours make24(const hours& h, bool is_pm) noexcept;
    // タイムゾーンデータベース
    struct tzdb;
    class tzdb_list;
    // タイムゾーンデータベースアクセス
    const tzdb& get_tzdb();
    tzdb_list& get_tzdb_list();
    const time_zone* locate_zone(string_view tz_name);
    const time_zone* current_zone();
    // リモートタイムゾーンデータベースサポート
    const tzdb& reload_tzdb();
    string remote_version();
    // 例外クラス
    class nonexistent_local_time;
    class ambiguous_local_time;
    // 情報クラス
    struct sys_info;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const sys_info& si);
    struct local_info;
    template<class CharT, class Traits>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os, const local_info& li);
    // class time_zone
    enum class choose {earliest, latest};
    class time_zone;
    bool operator==(const time_zone& x, const time_zone& y) noexcept;
    strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
    // クラステンプレート zoned_traits
    template<class T> struct zoned_traits;
    // クラステンプレート zoned_time
    template<class Duration, class TimeZonePtr = const time_zone*> class zoned_time;
    using zoned_seconds = zoned_time<seconds>;
    template<class Duration1, class Duration2, class TimeZonePtr>
      bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
                      const zoned_time<Duration2, TimeZonePtr>& y);
    template<class CharT, class Traits, class Duration, class TimeZonePtr>
      basic_ostream<CharT, Traits>&
        operator<<(basic_ostream<CharT, Traits>& os,
                   const zoned_time<Duration, TimeZonePtr>& t);
    // 閏秒サポート
    class leap_second;
    bool operator==(const leap_second& x, const leap_second& y);
    strong_ordering operator<=>(const leap_second& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator< (const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator< (const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator> (const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator> (const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y);
    template<class Duration>
      constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y);
    template<class Duration>
      requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
      constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y);
    // class time_zone_link
    class time_zone_link;
    bool operator==(const time_zone_link& x, const time_zone_link& y);
    strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y);
    // フォーマット
    template<class Duration> struct /*local-time-format-t*/;    // 説明専用
    template<class Duration>
      /*local-time-format-t*/<Duration>
        local_time_format(local_time<Duration> time, const string* abbrev = nullptr,
                          const seconds* offset_sec = nullptr);
  }
  template<class Rep, class Period, class CharT>
    struct formatter<chrono::duration<Rep, Period>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::sys_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::utc_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::tai_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::GPS時刻<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::file_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::local_time<Duration>, CharT>;
  template<class Duration, class CharT>
    struct formatter<chrono::/*local-time-format-t*/<Duration>, CharT>;
  template<class CharT> struct formatter<chrono::日, CharT>;
  template<class CharT> struct formatter<chrono::月, CharT>;
  template<class CharT> struct formatter<chrono::year, CharT>;
  template<class CharT> struct formatter<chrono::weekday, CharT>;
  template<class CharT> struct formatter<chrono::weekday_indexed, CharT>;
  template<class CharT> struct formatter<chrono::weekday_last, CharT>;
  template<class CharT> struct formatter<chrono::month_day, CharT>;
  template<class CharT> struct formatter<chrono::month_day_last, CharT>;
  template<class CharT> struct formatter<chrono::month_weekday, CharT>;
  template<class CharT> struct formatter<chrono::month_weekday_last, CharT>;
  template<class CharT> struct formatter<chrono::year_month, CharT>;
  template<class CharT> struct formatter<chrono::year_month_day, CharT>;
  template<class CharT> struct formatter<chrono::year_month_day_last, CharT>;
  template<class CharT> struct formatter<chrono::year_month_weekday, CharT>;
  template<class CharT> struct formatter<chrono::year_month_weekday_last, CharT>;
  template<class Rep, class Period, class CharT>
    struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, CharT>;
  template<class CharT> struct formatter<chrono::sys_info, CharT>;
  template<class CharT> struct formatter<chrono::local_info, CharT>;
  template<class Duration, class TimeZonePtr, class CharT>
    struct formatter<chrono::zoned_time<Duration, TimeZonePtr>, CharT>;
  namespace chrono {
    // 解析
    template<class CharT, class Parsable>
      /* 未指定 */
        parse(const CharT* fmt, Parsable& tp);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* 未指定 */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp);
    template<class CharT, class traits, class Alloc, class Parsable>
      /* 未指定 */
        parse(const CharT* fmt, Parsable& tp,
              basic_string<CharT, traits, Alloc>& abbrev);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* 未指定 */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp,
              basic_string<CharT, Traits, Alloc>& abbrev);
    template<class CharT, class Parsable>
      /* 未指定 */
        parse(const CharT* fmt, Parsable& tp, minutes& offset);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* 未指定 */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp,
              minutes& offset);
    template<class CharT, class traits, class Alloc, class Parsable>
      /* 未指定 */
        parse(const CharT* fmt, Parsable& tp,
              basic_string<CharT, traits, Alloc>& abbrev, minutes& offset);
    template<class CharT, class Traits, class Alloc, class Parsable>
      /* 未指定 */
        parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp,
              basic_string<CharT, Traits, Alloc>& abbrev, minutes& offset);
    // 暦法に関する定数
    inline constexpr last_spec last{};
    inline constexpr weekday Sunday{0};
    inline constexpr weekday Monday{1};
    inline constexpr weekday Tuesday{2};
    inline constexpr weekday Wednesday{3};
    inline constexpr weekday Thursday{4};
    inline constexpr weekday Friday{5};
    inline constexpr weekday Saturday{6};
    inline constexpr month January{1};
    inline constexpr month February{2};
    inline constexpr month March{3};
    inline constexpr month April{4};
    inline constexpr month May{5};
    inline constexpr month June{6};
    inline constexpr month July{7};
    inline constexpr month August{8};
    inline constexpr month September{9};
    inline constexpr month October{10};
    inline constexpr month November{11};
    inline constexpr month December{12};
  }
  inline namespace literals {
  inline namespace chrono_literals {
    // 期間リテラルのサフィックス
    constexpr chrono::時間                    operator""h(unsigned long long);
    constexpr chrono::duration</* 未指定 */,
                               ratio<3600, 1>> operator""h(long double);
    constexpr chrono::分                operator""min(unsigned long long);
    constexpr chrono::duration</* 未指定 */,
                               ratio<60, 1>> operator""min(long double);
    constexpr chrono::秒                     operator""s(unsigned long long);
    constexpr chrono::duration</* 未指定 */> operator""s(long double);
    constexpr chrono::ミリ秒                       operator""ms(unsigned long long);
    constexpr chrono::duration</* 未指定 */, milli> operator""ms(long double);
    constexpr chrono::マイクロ秒                       operator""us(unsigned long long);
    constexpr chrono::duration</* 未指定 */, micro> operator""us(long double);
    constexpr chrono::ナノ秒                       operator""ns(unsigned long long);
    constexpr chrono::duration</* 未指定 */, nano> operator""ns(long double);
    // 非メンバー関数
    constexpr chrono::日  operator""d(unsigned long long d) noexcept;
    // 非メンバー関数
    constexpr chrono::year operator""y(unsigned long long y) noexcept;
  }
  }
  namespace chrono {
    using namespace literals::chrono_literals;
  }
  // ハッシュサポート
  template<class T> struct hash;
  template<class Rep, class Period>
    struct hash<chrono::duration<Rep, Period>>;
  template<class Clock, class Duration>
    struct hash<chrono::time_point<Clock, Duration>>;
  template<> struct hash<chrono::日>;
  template<> struct hash<chrono::月>;
  template<> struct hash<chrono::year>;
  template<> struct hash<chrono::weekday>;
  template<> struct hash<chrono::weekday_indexed>;
  template<> struct hash<chrono::weekday_last>;
  template<> struct hash<chrono::month_day>;
  template<> struct hash<chrono::month_day_last>;
  template<> struct hash<chrono::月の曜日>;
  template<> struct hash<chrono::month_weekday_last>;
  template<> struct hash<chrono::year_month>;
  template<> struct hash<chrono::year_month_day>;
  template<> struct hash<chrono::year_month_day_last>;
  template<> struct hash<chrono::year_month_weekday>;
  template<> struct hash<chrono::year_month_weekday_last>;
  template<class Duration, class TimeZonePtr>
    struct hash<chrono::zoned_time<Duration, TimeZonePtr>>;
  template<> struct hash<chrono::leap_second>;
}

クラステンプレート std::chrono::duration

namespace std::chrono {
  template<class Rep, class Period = ratio<1>>
  class duration {
  public:
    using rep    = Rep;
    using period = typename Period::type;
  private:
    rep rep_;       // 説明専用
  public:
    // 構築/コピー/破棄
    constexpr duration() = default;
    template<class Rep2>
      constexpr explicit duration(const Rep2& r);
    template<class Rep2, class Period2>
      constexpr duration(const duration<Rep2, Period2>& d);
    ~duration() = default;
    duration(const duration&) = default;
    duration& operator=(const duration&) = default;
    // 観測
    constexpr rep count() const;
    // 算術演算
    constexpr common_type_t<duration> operator+() const;
    constexpr common_type_t<duration> operator-() const;
    constexpr duration& operator++();
    constexpr duration  operator++(int);
    constexpr duration& operator--();
    constexpr duration  operator--(int);
    constexpr duration& operator+=(const duration& d);
    constexpr duration& operator-=(const duration& d);
    constexpr duration& operator*=(const rep& rhs);
    constexpr duration& operator/=(const rep& rhs);
    constexpr duration& operator%=(const rep& rhs);
    constexpr duration& operator%=(const duration& rhs);
    // 特殊値
    static constexpr duration zero() noexcept;
    static constexpr duration min() noexcept;
    static constexpr duration max() noexcept;
  };
}

クラステンプレート std::chrono::time_point

namespace std::chrono {
  template<class Clock, class Duration = typename Clock::duration>
  class time_point {
  public:
    using clock    = Clock;
    using duration = Duration;
    using rep      = typename duration::rep;
    using period   = typename duration::period;
  private:
    duration d_;                                                // 説明専用
  public:
    // 構築
    constexpr time_point();                                     // エポックの値を持つ
    constexpr explicit time_point(const duration& d);           // time_point() + d と同じ
    template<class Duration2>
      constexpr time_point(const time_point<clock, Duration2>& t);
    // 観測
    constexpr duration time_since_epoch() const;
    // 算術演算
    constexpr time_point& operator++();
    constexpr time_point operator++(int);
    constexpr time_point& operator--();
    constexpr time_point operator--(int);
    constexpr time_point& operator+=(const duration& d);
    constexpr time_point& operator-=(const duration& d);
    // 特殊な値
    static constexpr time_point min() noexcept;
    static constexpr time_point max() noexcept;
  };
}

クラステンプレート std::common_type の std::chrono::duration に対する特殊化

namespace std {
  template<class Rep1, class Period1, class Rep2, class Period2>
    struct common_type<chrono::duration<Rep1, Period1>,
                       chrono::duration<Rep2, Period2>> {
      using type = chrono::duration<common_type_t<Rep1, Rep2>, /* 説明を参照 */>;
    };
}

クラステンプレート std::common_type の std::chrono::time_point に対する特殊化

namespace std {
  template<class Clock, class Duration1, class Duration2>
    struct common_type<chrono::time_point<Clock, Duration1>,
                       chrono::time_point<Clock, Duration2>> {
      using type = chrono::time_point<Clock, common_type_t<Duration1, Duration2>>;
    };
}

クラステンプレート std::chrono::treat_as_floating_point

template<class Rep> struct treat_as_floating_point : is_floating_point<Rep> { };

クラステンプレート std::chrono::duration_values

namespace std::chrono {
  template<class Rep>
    struct duration_values {
    public:
      static constexpr Rep zero() noexcept;
      static constexpr Rep min() noexcept;
      static constexpr Rep max() noexcept;
    };
}

クラス std::chrono::system_clock

namespace std::chrono {
  class system_clock {
  public:
    using rep        = /* 説明を参照 */;
    using period     = ratio</* 未指定 */, /* 未指定 */>;
    using duration   = chrono::duration<rep, period>;
    using time_point = chrono::time_point<system_clock>;
    static constexpr bool is_steady = /* 未指定 */;
    static time_point now() noexcept;
    // C 言語の time_t 型との相互変換
    static time_t      to_time_t  (const time_point& t) noexcept;
    static time_point  from_time_t(time_t t) noexcept;
  };
}

Class std:: chrono :: utc_clock

namespace std::chrono {
  class utc_clock {
  public:
    using rep                       = /* 符号付き算術型 */;
    using period                    = ratio</* 未指定 */, /* 未指定 */>;
    using duration                  = chrono::duration<rep, period>;
    using time_point                = chrono::time_point<utc_clock>;
    static constexpr bool is_steady = /* 未指定 */;
    static time_point now();
    template<class Duration>
      static sys_time<common_type_t<Duration, seconds>>
        to_sys(const utc_time<Duration>& t);
    template<class Duration>
      static utc_time<common_type_t<Duration, seconds>>
        from_sys(const sys_time<Duration>& t);
  };
}

Class std:: chrono :: tai_clock

namespace std::chrono {
  class tai_clock {
  public:
    using rep                       = /* 符号付き算術型 */;
    using period                    = ratio</* 未指定 */, /* 未指定 */>;
    using duration                  = chrono::duration<rep, period>;
    using time_point                = chrono::time_point<tai_clock>;
    static constexpr bool is_steady = /* 未指定 */;
    static time_point now();
    template<class Duration>
      static sys_time<common_type_t<Duration, seconds>>
        to_sys(const tai_time<Duration>& t);
    template<class Duration>
      static tai_time<common_type_t<Duration, seconds>>
        from_sys(const sys_time<Duration>& t);
  };
}

Class std:: chrono :: gps_clock

namespace std::chrono {
  class gps_clock {
  public:
    using rep                       = /* 符号付き算術型 */;
    using period                    = ratio</* 未指定 */, /* 未指定 */>;
    using duration                  = chrono::duration<rep, period>;
    using time_point                = chrono::time_point<gps_clock>;
    static constexpr bool is_steady = /* 未指定 */;
    static time_point now();
    template<class Duration>
      static sys_time<common_type_t<Duration, seconds>>
        to_sys(const gps_time<Duration>& t);
    template<class Duration>
      static gps_time<common_type_t<Duration, seconds>>
        from_sys(const sys_time<Duration>& t);
  };
}

クラス std::chrono::steady_clock

namespace std::chrono {
  class steady_clock {
  public:
    using rep        = /* 未指定 */;
    using period     = ratio</* 未指定 */, /* 未指定 */>;
    using duration   = chrono::duration<rep, period>;
    using time_point = chrono::time_point</* 未指定 */, duration>;
    static constexpr bool is_steady = true;
    static time_point now() noexcept;
  };
}

クラス std::chrono::high_resolution_clock

namespace std::chrono {
  class high_resolution_clock {
  public:
    using rep        = /* 未指定 */;
    using period     = ratio</* 未指定 */, /* 未指定 */>;
    using duration   = chrono::duration<rep, period>;
    using time_point = chrono::time_point</* 未指定 */, duration>;
    static constexpr bool is_steady = /* 未指定 */;
    static time_point now() noexcept;
  };
}

クラステンプレート std:: chrono :: clock_time_conversion

namespace std::chrono {
  template<class DestClock, class SourceClock>
  struct clock_time_conversion {};
  template<class Clock>
  struct clock_time_conversion<Clock, Clock> {
    template<class Duration>
      time_point<Clock, Duration>
        operator()(const time_point<Clock, Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<system_clock, system_clock> {
    template<class Duration>
      sys_time<Duration>
        operator()(const sys_time<Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<utc_clock, utc_clock> {
    template<class Duration>
      utc_time<Duration>
        operator()(const utc_time<Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<utc_clock, system_clock> {
    template<class Duration>
      utc_time<common_type_t<Duration, seconds>>
        operator()(const sys_time<Duration>& t) const;
  };
  template<>
  struct clock_time_conversion<system_clock, utc_clock> {
    template<class Duration>
      sys_time<common_type_t<Duration, seconds>>
        operator()(const utc_time<Duration>& t) const;
  };
  template<class SourceClock>
  struct clock_time_conversion<system_clock, SourceClock> {
    template<class Duration>
      auto operator()(const time_point<SourceClock, Duration>& t) const
        -> decltype(SourceClock::to_sys(t));
  };
  template<class DestClock>
  struct clock_time_conversion<DestClock, system_clock> {
    template<class Duration>
      auto operator()(const sys_time<Duration>& t) const
        -> decltype(DestClock::from_sys(t));
  };
  template<class SourceClock>
  struct clock_time_conversion<utc_clock, SourceClock> {
    template<class Duration>
      auto operator()(const time_point<SourceClock, Duration>& t) const
        -> decltype(SourceClock::to_utc(t));
  };
  template<class DestClock>
  struct clock_time_conversion<DestClock, utc_clock> {
    template<class Duration>
      auto operator()(const utc_time<Duration>& t) const
        -> decltype(DestClock::from_utc(t));
  };
}

クラス std:: chrono :: last_spec

namespace std::chrono {
  struct last_spec {
    explicit last_spec() = default;
  };
}

Class std:: chrono :: day

namespace std::chrono {
  class day {
    unsigned char d_;           // 説明専用
  public:
    day() = default;
    constexpr explicit day(unsigned d) noexcept;
    constexpr day& operator++()    noexcept;
    constexpr day  operator++(int) noexcept;
    constexpr day& operator--()    noexcept;
    constexpr day  operator--(int) noexcept;
    constexpr day& operator+=(const days& d) noexcept;
    constexpr day& operator-=(const days& d) noexcept;
    constexpr explicit operator unsigned() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Class std:: chrono :: month

namespace std::chrono {
  class month {
    unsigned char m_;           // 説明専用
  public:
    month() = default;
    constexpr explicit month(unsigned m) noexcept;
    constexpr month& operator++()    noexcept;
    constexpr month  operator++(int) noexcept;
    constexpr month& operator--()    noexcept;
    constexpr month  operator--(int) noexcept;
    constexpr month& operator+=(const months& m) noexcept;
    constexpr month& operator-=(const months& m) noexcept;
    constexpr explicit operator unsigned() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: year

namespace std::chrono {
  class year {
    short y_;                   // 説明専用
  public:
    year() = default;
    constexpr explicit year(int y) noexcept;
    constexpr year& operator++()    noexcept;
    constexpr year  operator++(int) noexcept;
    constexpr year& operator--()    noexcept;
    constexpr year  operator--(int) noexcept;
    constexpr year& operator+=(const years& y) noexcept;
    constexpr year& operator-=(const years& y) noexcept;
    constexpr year operator+() const noexcept;
    constexpr year operator-() const noexcept;
    constexpr bool is_leap() const noexcept;
    constexpr explicit operator int() const noexcept;
    constexpr bool ok() const noexcept;
    static constexpr year min() noexcept;
    static constexpr year max() noexcept;
  };
}

クラス std:: chrono :: weekday

namespace std::chrono {
  class weekday {
    unsigned char wd_;          // 説明専用
  public:
    weekday() = default;
    constexpr explicit weekday(unsigned wd) noexcept;
    constexpr weekday(const sys_days& dp) noexcept;
    constexpr explicit weekday(const local_days& dp) noexcept;
    constexpr weekday& operator++()    noexcept;
    constexpr weekday  operator++(int) noexcept;
    constexpr weekday& operator--()    noexcept;
    constexpr weekday  operator--(int) noexcept;
    constexpr weekday& operator+=(const days& d) noexcept;
    constexpr weekday& operator-=(const days& d) noexcept;
    constexpr unsigned c_encoding() const noexcept;
    constexpr unsigned iso_encoding() const noexcept;
    constexpr bool ok() const noexcept;
    constexpr weekday_indexed operator[](unsigned index) const noexcept;
    constexpr weekday_last    operator[](last_spec) const noexcept;
  };
}

クラス std:: chrono :: weekday_indexed

namespace std::chrono {
  class weekday_indexed {
    chrono::weekday  wd_;       // 説明専用
    unsigned char    index_;    // 説明専用
  public:
    weekday_indexed() = default;
    constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
    constexpr chrono::weekday weekday() const noexcept;
    constexpr unsigned        index()   const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: weekday_last

namespace std::chrono {
  class weekday_last {
    chrono::weekday wd_;                // 説明専用
    public:
    constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
    constexpr chrono::weekday weekday() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: month_day

namespace std::chrono {
  class month_day {
    chrono::month m_;           // 説明専用
    chrono::day   d_;           // 説明専用
  public:
    month_day() = default;
    constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr chrono::day   day()   const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: month_day_last

namespace std::chrono {
  class month_day_last {
    chrono::month m_;                   // 説明専用
  public:
    constexpr explicit month_day_last(const chrono::month& m) noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: month_weekday

namespace std::chrono {
  class month_weekday {
    chrono::month           m_;         // 説明専用
    chrono::weekday_indexed wdi_;       // 説明専用
  public:
    constexpr month_weekday(const chrono::month& m,
                            const chrono::weekday_indexed& wdi) noexcept;
    constexpr chrono::month           month()           const noexcept;
    constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

Class std:: chrono :: month_weekday_last

namespace std::chrono {
  class month_weekday_last {
    chrono::month        m_;    // 説明専用
    chrono::weekday_last wdl_;  // 説明専用
  public:
    constexpr month_weekday_last(const chrono::month& m,
                                 const chrono::weekday_last& wdl) noexcept;
    constexpr chrono::month        month()        const noexcept;
    constexpr chrono::weekday_last weekday_last() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: year_month

namespace std::chrono {
  class year_month {
    chrono::year  y_;           // 説明専用
    chrono::month m_;           // 説明専用
  public:
    year_month() = default;
    constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
    constexpr chrono::year  year()  const noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr year_month& operator+=(const months& dm) noexcept;
    constexpr year_month& operator-=(const months& dm) noexcept;
    constexpr year_month& operator+=(const years& dy)  noexcept;
    constexpr year_month& operator-=(const years& dy)  noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: year_month_day

namespace std::chrono {
  class year_month_day {
    chrono::year  y_;           // 説明専用
    chrono::month m_;           // 説明専用
    chrono::day   d_;           // 説明専用
  public:
    year_month_day() = default;
    constexpr year_month_day(const chrono::year& y, const chrono::month& m,
                             const chrono::day& d) noexcept;
    constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
    constexpr year_month_day(const sys_days& dp) noexcept;
    constexpr explicit year_month_day(const local_days& dp) noexcept;
    constexpr year_month_day& operator+=(const months& m) noexcept;
    constexpr year_month_day& operator-=(const months& m) noexcept;
    constexpr year_month_day& operator+=(const years& y)  noexcept;
    constexpr year_month_day& operator-=(const years& y)  noexcept;
    constexpr chrono::year  year()  const noexcept;
    constexpr chrono::month month() const noexcept;
    constexpr chrono::day   day()   const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: year_month_day_last

namespace std::chrono {
  class year_month_day_last {
    chrono::year           y_;          // 説明専用
    chrono::month_day_last mdl_;        // 説明専用
  public:
    constexpr year_month_day_last(const chrono::year& y,
                                  const chrono::month_day_last& mdl) noexcept;
    constexpr year_month_day_last& operator+=(const months& m) noexcept;
    constexpr year_month_day_last& operator-=(const months& m) noexcept;
    constexpr year_month_day_last& operator+=(const years& y)  noexcept;
    constexpr year_month_day_last& operator-=(const years& y)  noexcept;
    constexpr chrono::year           year()           const noexcept;
    constexpr chrono::month          month()          const noexcept;
    constexpr chrono::month_day_last month_day_last() const noexcept;
    constexpr chrono::day            day()            const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: year_month_weekday

namespace std::chrono {
  class year_month_weekday {
    chrono::year            y_;         // 説明専用
    chrono::month           m_;         // 説明専用
    chrono::weekday_indexed wdi_;       // 説明専用
  public:
    year_month_weekday() = default;
    constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
                                 const chrono::weekday_indexed& wdi) noexcept;
    constexpr year_month_weekday(const sys_days& dp) noexcept;
    constexpr explicit year_month_weekday(const local_days& dp) noexcept;
    constexpr year_month_weekday& operator+=(const months& m) noexcept;
    constexpr year_month_weekday& operator-=(const months& m) noexcept;
    constexpr year_month_weekday& operator+=(const years& y)  noexcept;
    constexpr year_month_weekday& operator-=(const years& y)  noexcept;
    constexpr chrono::year            year()            const noexcept;
    constexpr chrono::month           month()           const noexcept;
    constexpr chrono::weekday         weekday()         const noexcept;
    constexpr unsigned                index()           const noexcept;
    constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラス std:: chrono :: year_month_weekday_last

namespace std::chrono {
  class year_month_weekday_last {
    chrono::year         y_;    // 説明専用
    chrono::month        m_;    // 説明専用
    chrono::weekday_last wdl_;  // 説明専用
  public:
    constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
                                      const chrono::weekday_last& wdl) noexcept;
    constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
    constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
    constexpr year_month_weekday_last& operator+=(const years& y)  noexcept;
    constexpr year_month_weekday_last& operator-=(const years& y)  noexcept;
    constexpr chrono::year         year()         const noexcept;
    constexpr chrono::month        month()        const noexcept;
    constexpr chrono::weekday      weekday()      const noexcept;
    constexpr chrono::weekday_last weekday_last() const noexcept;
    constexpr          operator sys_days()   const noexcept;
    constexpr explicit operator local_days() const noexcept;
    constexpr bool ok() const noexcept;
  };
}

クラステンプレート std::chrono::hh_mm_ss

namespace std::chrono {
  template<class Duration> class hh_mm_ss {
  public:
    static constexpr unsigned fractional_width = /* 説明を参照 */;
    using precision                            = /* 説明を参照 */;
    constexpr hh_mm_ss() noexcept : hh_mm_ss{Duration::zero()} {}
    constexpr explicit hh_mm_ss(Duration d);
    constexpr bool is_negative() const noexcept;
    constexpr chrono::hours hours() const noexcept;
    constexpr chrono::minutes minutes() const noexcept;
    constexpr chrono::seconds seconds() const noexcept;
    constexpr precision subseconds() const noexcept;
    constexpr explicit operator precision() const noexcept;
    constexpr precision to_duration() const noexcept;
  private:
    bool            is_neg;     // 説明専用
    chrono::hours   h;          // 説明専用
    chrono::minutes m;          // 説明専用
    chrono::seconds s;          // 説明専用
    precision       ss;         // 説明専用
  };
}

クラス std:: chrono :: tzdb

namespace std::chrono {
  struct tzdb {
    string                 version;
    vector<time_zone>      zones;
    vector<time_zone_link> links;
    vector<leap_second>    leap_seconds;
    const time_zone* locate_zone(string_view tz_name) const;
    const time_zone* current_zone() const;
  };
}

クラス std:: chrono :: tzdb_list

namespace std::chrono {
  class tzdb_list {
  public:
    tzdb_list(const tzdb_list&) = delete;
    tzdb_list& operator=(const tzdb_list&) = delete;
    // 未規定の追加コンストラクタ
    class const_iterator;
    const tzdb& front() const noexcept;
    const_iterator erase_after(const_iterator p);
    const_iterator begin() const noexcept;
    const_iterator end()   const noexcept;
    const_iterator cbegin() const noexcept;
    const_iterator cend()   const noexcept;
  };
}

クラス std:: chrono :: nonexistent_local_time

namespace std::chrono {
  class nonexistent_local_time : public runtime_error {
  public:
    template<class Duration>
      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
  };
}

クラス std:: chrono :: ambiguous_local_time

namespace std::chrono {
  class ambiguous_local_time : public runtime_error {
  public:
    template<class Duration>
      ambiguous_local_time(const local_time<Duration>& tp, const local_info& i);
  };
}

Class std:: chrono :: sys_info

namespace std::chrono {
  struct sys_info {
    sys_seconds   begin;
    sys_seconds   end;
    seconds       offset;
    minutes       save;
    string        abbrev;
  };
}

クラス std:: chrono :: local_info

namespace std::chrono {
  struct local_info {
    static constexpr int unique      = 0;
    static constexpr int nonexistent = 1;
    static constexpr int ambiguous   = 2;
    int result;
    sys_info first;
    sys_info second;
  };
}

クラス std:: chrono :: time_zone

namespace std::chrono {
  class time_zone {
  public:
    time_zone(time_zone&&) = default;
    time_zone& operator=(time_zone&&) = default;
    // 未規定の追加コンストラクタ
    string_view name() const noexcept;
    template<class Duration> sys_info   get_info(const sys_time<Duration>& st)   const;
    template<class Duration> local_info get_info(const local_time<Duration>& tp) const;
    template<class Duration>
      sys_time<common_type_t<Duration, seconds>>
        to_sys(const local_time<Duration>& tp) const;
    template<class Duration>
      sys_time<common_type_t<Duration, seconds>>
        to_sys(const local_time<Duration>& tp, choose z) const;
    template<class Duration>
      local_time<common_type_t<Duration, seconds>>
        to_local(const sys_time<Duration>& tp) const;
  };
}

クラステンプレート std:: chrono :: zoned_traits

namespace std::chrono {
  template<class T> struct zoned_traits {};
  template<> struct zoned_traits<const time_zone*> {
    static const time_zone* default_zone();
    static const time_zone* locate_zone(string_view name);
  };
}

クラステンプレート std:: chrono :: zoned_time

namespace std::chrono {
  template<class Duration, class TimeZonePtr = const time_zone*>
  class zoned_time {
  public:
    using duration = common_type_t<Duration, seconds>;
  private:
    TimeZonePtr        zone_;                   // 説明専用
    sys_time<duration> tp_;                     // 説明専用
    using traits = zoned_traits<TimeZonePtr>;   // 説明専用
  public:
    zoned_time();
    zoned_time(const zoned_time&) = default;
    zoned_time& operator=(const zoned_time&) = default;
    zoned_time(const sys_time<Duration>& st);
    explicit zoned_time(TimeZonePtr z);
    explicit zoned_time(string_view name);
    template<class Duration2>
      zoned_time(const zoned_time<Duration2, TimeZonePtr>& zt);
    zoned_time(TimeZonePtr z,    const sys_time<Duration>& st);
    zoned_time(string_view name, const sys_time<Duration>& st);
    zoned_time(TimeZonePtr z,    const local_time<Duration>& tp);
    zoned_time(string_view name, const local_time<Duration>& tp);
    zoned_time(TimeZonePtr z,    const local_time<Duration>& tp, choose c);
    zoned_time(string_view name, const local_time<Duration>& tp, choose c);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt);
    template<class Duration2, class TimeZonePtr2>
      zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
    zoned_time& operator=(const sys_time<Duration>& st);
    zoned_time& operator=(const local_time<Duration>& ut);
    operator sys_time<duration>() const;
    explicit operator local_time<duration>() const;
    TimeZonePtr          get_time_zone()  const;
    local_time<duration> get_local_time() const;
    sys_time<duration>   get_sys_time()   const;
    sys_info             get_info()       const;
  };
  zoned_time() -> zoned_time<seconds>;
  template<class Duration>
    zoned_time(sys_time<Duration>)
      -> zoned_time<common_type_t<Duration, seconds>>;
  template<class TimeZonePtrOrName>
    using /*time-zone-representation*/ =        // 説明専用
      conditional_t<is_convertible_v<TimeZonePtrOrName, string_view>,
                    const time_zone*,
                    remove_cvref_t<TimeZonePtrOrName>>;
  template<class TimeZonePtrOrName>
    zoned_time(TimeZonePtrOrName&&)
      -> zoned_time<seconds, /*time-zone-representation*/<TimeZonePtrOrName>>;
  template<class TimeZonePtrOrName, class Duration>
    zoned_time(TimeZonePtrOrName&&, sys_time<Duration>)
      -> zoned_time<common_type_t<Duration, seconds>,
                    /*time-zone-representation*/<TimeZonePtrOrName>>;
  template<class TimeZonePtrOrName, class Duration>
    zoned_time(TimeZonePtrOrName&&, local_time<Duration>,
               choose = choose::earliest)
      -> zoned_time<common_type_t<Duration, seconds>,
                    /*time-zone-representation*/<TimeZonePtrOrName>>;
  template<class Duration, class TimeZonePtrOrName, class TimeZonePtr2>
    zoned_time(TimeZonePtrOrName&&, zoned_time<Duration, TimeZonePtr2>,
               choose = choose::earliest)
      -> zoned_time<common_type_t<Duration, seconds>,
                    /*time-zone-representation*/<TimeZonePtrOrName>>;
}

クラス std::chrono::leap_second

namespace std::chrono {
  class leap_second {
  public:
    leap_second(const leap_second&)            = default;
    leap_second& operator=(const leap_second&) = default;
    // 未規定の追加コンストラクタ
    constexpr sys_seconds date() const noexcept;
    constexpr seconds value() const noexcept;
  };
}

クラス std::chrono::time_zone_link

namespace std::chrono {
  class time_zone_link {
  public:
    time_zone_link(time_zone_link&&)            = default;
    time_zone_link& operator=(time_zone_link&&) = default;
    // 未規定の追加コンストラクタ
    string_view name()   const noexcept;
    string_view target() const noexcept;
  };
}

クラステンプレート local-time-format-t

namespace std::chrono {
  template<class Duration> struct /*local-time-format-t*/ {       // 説明専用
    local_time<Duration> time;                                    // 説明専用
    const string* abbrev;                                         // 説明専用
    const seconds* offset_sec;                                    // 説明専用
  };
}