- chrono[meta header]
- std::chrono[meta namespace]
- function[meta id-type]
- cpp20[meta cpp]
namespace std::chrono {
constexpr month operator+(const month& x, const months& y) noexcept; // (1) C++20
constexpr month operator+(const months& x, const month& y) noexcept; // (2) C++20
}
month
の加算を行う。
- (1) :
month
に時間間隔を加算する - (2) : 時間間隔に
month
を加算する
- (1) :
ユークリッド除法 (Euclidean division) による除算関数modulo(a, b)
があるとして、
return month{modulo(static_cast<long long>(static_cast<unsigned int>(x)) + (y.count() - 1), 12) + 1};
- y.count()[link /reference/chrono/duration/count.md]
- (2) :
return y + x;
投げない
#include <cassert>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
assert(chrono::January + chrono::months{2} == chrono::March);
assert(chrono::months{2} + chrono::January == chrono::March);
assert(chrono::February + chrono::months{11} == chrono::January);
}
- chrono::January[link /reference/chrono/month_constants.md]
- chrono::February[link /reference/chrono/month_constants.md]
- chrono::March[link /reference/chrono/month_constants.md]
- C++20
- Clang: 8.0 [mark verified]
- GCC: 9.2 [mark noimpl]
- Visual C++: 2019 Update 3 [mark noimpl]