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);
}
出力
Mon
Sat
バージョン
言語
- C++20
処理系
- Clang: 8.0 (入出力ストリームなし) ✅
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌
関連項目
参照
- P2592R3 Hashing support for
std::chrono
value classes- C++26でハッシュサポートが追加された