constexpr bool is_leap() const noexcept; // (1) C++20
概要
うるう年かを判定する。
戻り値
コンストラクタで設定されて保持している年を表す値y
があるとして、以下を返す:
return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);
例
#include <cassert>
#include <chrono>
namespace chrono = std::chrono;
int main()
{
// 4年周期のうるう年
assert(chrono::year{2004}.is_leap());
assert(chrono::year{2008}.is_leap());
assert(chrono::year{2012}.is_leap());
assert(chrono::year{2016}.is_leap());
assert(chrono::year{2020}.is_leap());
// 400年周期のうるう年
assert(chrono::year{1600}.is_leap());
assert(chrono::year{2000}.is_leap());
assert(chrono::year{2400}.is_leap());
// 100年周期は、400年周期でない限り非うるう年
assert(!chrono::year{1900}.is_leap());
assert(!chrono::year{2100}.is_leap());
assert(!chrono::year{2200}.is_leap());
assert(!chrono::year{2300}.is_leap());
}
出力
バージョン
言語
- C++20
処理系
- Clang: 8.0 ✅
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌