最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<chrono>

# std::chrono::year_month_weekday::コンストラクタ(C++20)

    year_month_weekday() = default;                            // (1) C++20

    constexpr year_month_weekday(
      const chrono::year& y,
      const chrono::month& m,
      const chrono::weekday_indexed& wdi) noexcept;            // (2) C++20

    constexpr
      year_month_weekday(const sys_days& dp) noexcept;         // (3) C++20
    constexpr explicit
      year_month_weekday(const local_days& dp) noexcept;       // (4) C++20

    year_month_weekday(const year_month_weekday&) = default; // (5) C++20
    year_month_weekday(year_month_weekday&&) = default;      // (6) C++20

## 概要

- (1) : デフォルトコンストラクタ
- (2) : 年、月、N回目の曜日の値をそれぞれ指定して構築する
- (3) : 日単位のシステム時間から変換して構築
- (4) : 日単位のローカル時間から変換して構築
- (5) : コピーコンストラクタ
- (6) : ムーブコンストラクタ

## 効果

- (1) : デフォルト初期化では年、月、曜日とN回目の値がそれぞれ符号なし整数の未初期化値となり、値初期化では値0となる
- (2) : `y`、`m`、`wdi`をメンバ変数として保持する
- (3) : `dp`が指すシステム時間に対応する年、月、日の値を求めて構築する
- (4) : `sys_days{dp.time_since_epoch()}`と等価

## 例外

投げない

## 備考

- (3) : `year_month_weekday`クラスのあらゆる値`ymwd`について、`ymwd.ok()`が`true`である値はすべて、`ymwd == year_month_weekday{sys_days{ymwd}}`が`true`となる

### 例

    #include <cassert>
    #include <chrono>

    namespace chrono = std::chrono;
    using namespace std::chrono_literals;

    int main()
    {
      chrono::year_month_weekday date1{2020y, chrono::March, chrono::Sunday[2]};
      chrono::year_month_weekday date2{chrono::year{2020}, chrono::month{3}, chrono::Sunday[2]};
      assert(date1 == 2020y/3/chrono::Sunday[2]);
      assert(date2 == 2020y/3/chrono::Sunday[2]);
    }

### 出力

## バージョン

### 言語

- C++20

### 処理系

- Clang: 8.0 ✅
- GCC: 11.1 ✅
- Visual C++: 2019 Update 3 ❌