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

履歴 編集

function
<chrono>

# std::chrono::year_month_weekday::operator+=(C++20)

    constexpr year_month_weekday& operator+=(const months& m) noexcept; // (1) C++20
    constexpr year_month_weekday& operator+=(const years& y) noexcept;  // (2) C++20

## 概要

`year_month_weekday`の値に対して加算の複合代入を行う。

- (1) : 月の時間間隔を加算する
- (2) : 年の時間間隔を加算する

パラメータの型が、カレンダー時間の`month`、`year`ではなく、時間間隔を表す`months`、`years`であることに注意。

## テンプレートパラメータ制約

- (1) : `months`パラメータに指定した引数が`years`に変換可能である場合、`years`への暗黙変換は、`months`への暗黙変換よりも劣る

## 効果

- (1) : `*this = *this + m`
- (2) : `*this = *this + y`

## 戻り値

- (1), (2) : `*this`

## 例外

投げない

## 例

    #include <cassert>
    #include <chrono>

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

    int main()
    {
      chrono::year_month_weekday date = 2019y/2/chrono::Sunday[2];

      date += chrono::months{1}; // 1ヶ月進める
      date += chrono::years{1};  // 1年進める

      assert(chrono::year_month_day{chrono::sys_days{date}} == 2020y/3/8);
    }

### 出力

## バージョン

### 言語

- C++20

### 処理系

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

## 参照

- LWG Issue 3260. `year_month*` arithmetic rejects durations convertible to `years`