- 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 |
名前 |
説明 |
対応バージョン |
ok |
値が範囲に収まっているか判定する |
C++20 |
名前 |
説明 |
対応バージョン |
operator== |
等値比較を行う |
C++20 |
bool operator!=(const weekday&, const weekday&) noexcept; |
非等値比較を行う (== により使用可能) |
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]
- Clang: 8.0 (入出力ストリームなし) [mark verified]
- GCC: 9.2 [mark noimpl]
- Visual C++: 2019 Update 3 [mark noimpl]