namespace std::chrono {
class year;
}
概要
year
は、年単体の値を表すカレンダー表現のためクラスである。
値の範囲として[-32767, 32767]
を扱う。
このクラスは等値比較および大小比較ができ、EqualityComparableおよびLessThanComparableの要件を満たす。
このクラスは、トリビアルコピー可能で、かつスタンダードレイアウト型である。
備考
- このクラスは時間間隔を表す型ではない。年の時間間隔は
years
である
メンバ関数
構築/コピー/破棄
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++20 |
year& operator=(const year&) = default; year& operator=(year&&) = default; |
代入演算子 | C++20 |
算術演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator+ |
正の符号 | C++20 |
operator- |
負の符号 (符号反転する) | C++20 |
operator++ |
インクリメント | C++20 |
operator-- |
デクリメント | C++20 |
operator+= |
加算の複合代入 | C++20 |
operator-= |
減算の複合代入 | C++20 |
うるう年
名前 | 説明 | 対応バージョン |
---|---|---|
is_leap |
うるう年かを判定する | C++20 |
変換
名前 | 説明 | 対応バージョン |
---|---|---|
operator int |
int 型への変換演算子 |
C++20 |
値の範囲
名前 | 説明 | 対応バージョン |
---|---|---|
ok |
値が範囲[min(), max()] に収まっているか判定する |
C++20 |
静的メンバ関数
値の範囲
名前 | 説明 | 対応バージョン |
---|---|---|
min |
扱える最小値 | C++20 |
max |
扱える最大値 | C++20 |
非メンバ関数
算術演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator+ |
加算 | C++20 |
operator- |
減算 | C++20 |
カレンダー構文演算子
名前 | 説明 | 対応バージョン |
---|---|---|
operator/ |
カレンダー要素同士をつなぎ合わせる | C++20 |
比較演算
名前 | 説明 | 対応バージョン |
---|---|---|
operator== |
等値比較を行う | C++20 |
bool operator!=(const year&, const year&) noexcept; |
非等値比較を行う (== により使用可能) |
C++20 |
operator<=> |
三方比較を行う | C++20 |
bool operator<(const year&, const year&) noexcept; |
左辺が右辺より小さいかを判定する (<=> により使用可能) |
C++20 |
bool operator<=(const year&, const year&) noexcept; |
左辺が右辺以下を判定する (<=> により使用可能) |
C++20 |
bool operator>(const year&, const year&) noexcept; |
左辺が右辺より大きいかを判定する (<=> により使用可能) |
C++20 |
bool operator>=(const year&, const year&) noexcept; |
左辺が右辺以上を判定する (<=> により使用可能) |
C++20 |
入出力
名前 | 説明 | 対応バージョン |
---|---|---|
operator<< |
出力ストリームに出力する | C++20 |
from_stream |
フォーマット指定して入力ストリームから入力する | C++20 |
リテラル
名前 | 説明 | 対応バージョン |
---|---|---|
y |
年リテラル | C++20 |
文字列フォーマットサポート
名前 | 説明 | 対応バージョン |
---|---|---|
formatter |
std::formatter クラスの特殊化 |
C++20 |
ハッシュサポート
名前 | 説明 | 対応バージョン |
---|---|---|
template <class T> struct hash; |
hash クラスの先行宣言 |
C++26 |
template<> struct hash<chrono::year>; |
hash クラスのyear に対する特殊化 |
C++26 |
例
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
// yearオブジェクトの構築、および年を進める
chrono::year y{2020};
y += chrono::years{3};
std::cout << y << std::endl;
// 年リテラルyを使用してyearオブジェクトを構築し、
// operator/を使用して日付を組み立てる
using namespace std::chrono_literals;
chrono::year_month_day date = 2020y/3/1;
std::cout << date << std::endl;
}
19
#include <iostream>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
// yearオブジェクトの構築、および年を進める
chrono::year y{2020};
y += chrono::years{3};
std::cout << y << std::endl;
// 年リテラルyを使用してyearオブジェクトを構築し、
// operator/を使用して日付を組み立てる
using namespace std::chrono_literals;
chrono::year_month_day date = 2020y/3/1;
std::cout << date << std::endl;
}
出力
2023
2020/Mar/01
バージョン
言語
- C++20
処理系
- Clang: 8.0 (入出力ストリームなし) ✅
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌
参照
- P2592R3 Hashing support for
std::chrono
value classes- C++26でハッシュサポートが追加された