最終更新日時(UTC):
が更新

履歴 編集

function
<chrono>

std::chrono::year::is_leap(C++20)

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時点で実装なし)