Skip to content

Latest commit

 

History

History
155 lines (107 loc) · 4.84 KB

weekday.md

File metadata and controls

155 lines (107 loc) · 4.84 KB

weekday

  • chrono[meta header]
  • std::chrono[meta namespace]
  • class[meta id-type]
  • cpp20[meta cpp]
namespace std::chrono {
  class weekday;
}

概要

weekdayは、曜日を表すカレンダー表現のためクラスである。

日曜日から土曜日までを値の範囲[0, 6]として扱うが、このクラスではその範囲外の非負の値を扱える。

このクラスは等値比較ができ、EqualityComparableの要件を満たす。しかし、週の最初の曜日について (日曜日か月曜日か) 合意が得られないため大小比較はできず、LessThanComparable要件は満たさない。

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

メンバ関数

構築/コピー/破棄

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

算術演算

名前 説明 対応バージョン
operator++ インクリメント C++20
operator-- デクリメント C++20
operator+= 加算の複合代入 C++20
operator-= 減算の複合代入 C++20

変換

名前 説明 対応バージョン
c_encoding C / C++仕様に基づいた曜日の整数値を取得する C++20
iso_encoding ISO 8601に基づいた曜日の整数値を取得する C++20

検証

名前 説明 対応バージョン
ok 値が範囲に収まっているか判定する C++20

月のN回目の曜日

名前 説明 対応バージョン
operator[] 月のN回目の指定した曜日を取得する C++20

非メンバ関数

算術演算

名前 説明 対応バージョン
operator+ 加算 C++20
operator- 減算 C++20

比較演算

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

入出力

名前 説明 対応バージョン
operator<< 出力ストリームに出力する C++20
from_stream フォーマット指定して入力ストリームから入力する C++20

文字列フォーマットサポート

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

ハッシュサポート

名前 説明 対応バージョン
template <class T> struct hash; hashクラスの先行宣言 C++26
template<> struct hash<chrono::weekday>; hashクラスのweekdayに対する特殊化 C++26

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

namespace chrono = std::chrono;

int main() {
  chrono::weekday w = chrono::Sunday;
  ++w;
  std::cout << w << std::endl;

  chrono::weekday v = chrono::Wednesday;
  v += chrono::days{3};
  std::cout << v << std::endl;

  // 曜日は循環する
  chrono::weekday u = chrono::Saturday;
  v += chrono::days{2};
  assert(v == chrono::Monday);
}
  • chrono::weekday[color ff0000]
  • chrono::Sunday[link weekday_constants.md]
  • chrono::Wednesday[link weekday_constants.md]
  • chrono::Saturday[link weekday_constants.md]
  • chrono::Monday[link weekday_constants.md]

出力

Mon
Sat

バージョン

言語

  • C++20

処理系

  • Clang: 8.0 (入出力ストリームなし) [mark verified]
  • GCC: 9.2 [mark noimpl]
  • Visual C++: 2019 Update 3 [mark noimpl]

関連項目

参照