最終更新日時(UTC):
が更新

履歴 編集

class
<chrono>

std::chrono::weekday_indexed(C++20)

namespace std::chrono {
  class weekday_indexed;
}

概要

weekday_indexedは、月内でのN回目の指定した曜日を表すクラスである。

Nの妥当な範囲は[1, 5]である。0ベースではないことに注意。

このクラスは等値比較ができ、EqualityComparableの要件を満たす。しかし大小比較はできず、LessThanComparable要件は満たさない。

このクラスは、トリビアルコピー可能で、かつスタンダードレイアウト型である。

メンバ関数

構築/コピー/破棄

名前 説明 対応バージョン
(constructor) コンストラクタ C++20
weekday_indexed& operator=(const weekday_indexed&) = default;
weekday_indexed& operator=(weekday_indexed&&) = default;
代入演算子 C++20

観測

名前 説明 対応バージョン
weekday 曜日を取得する C++20
index インデックスを取得する C++20
ok 値が範囲に収まっているか判定する C++20

非メンバ関数

比較演算

名前 説明 対応バージョン
operator== 等値比較を行う C++20
bool operator!=(const weekday_indexed&, const weekday_indexed&) noexcept; 非等値比較を行う (==により使用可能) C++20

入出力

名前 説明 対応バージョン
operator<< 出力ストリームに出力する C++20

文字列フォーマット

名前 説明 対応バージョン
formatter std::formatterクラスの特殊化 C++20

#include <cassert>
#include <iostream>
#include <chrono>

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

int main() {
  // 未規定の年月の、最初の日曜日
  auto wi1 = chrono::Sunday[1];
  chrono::weekday_indexed wi2{chrono::Sunday, 1};
  assert(wi1.weekday() == chrono::Sunday);
  assert(wi1.index() == 1);
  assert(wi1 == wi2);

  // 2020年4月の最初の日曜日を取得する
  chrono::year_month_weekday ymw = 2020y/4/chrono::Sunday[1];
  chrono::sys_days sd{ymw};
  chrono::year_month_day date{sd};
  std::cout << date << std::endl;
}

出力

2020-04-05

バージョン

言語

  • C++20

処理系

  • Clang: 8.0 (入出力ストリームなし)
  • GCC: (10.1時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)