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

履歴 編集

function
<chrono>

std::chrono::weekday::ok(C++20)

constexpr bool ok() const noexcept; // (1) C++20

概要

weekdayオブジェクトが保持する曜日の値が[0, 6]の範囲内かを判定する。

戻り値

コンストラクタで設定されて保持している曜日を表す値wdがあるとして、以下を返す:

return wd <= 6;

備考

  • この関数は、値の妥当性を検証するのではなく、カレンダー範囲の値をもっているかの判定をする

#include <cassert>
#include <chrono>

namespace chrono = std::chrono;

int main()
{
  chrono::weekday w{0};
  assert(w.ok());

  assert(chrono::weekday{6}.ok());
  assert(chrono::weekday{7}.ok());  // 7はコンストラクタで0に置き換えられる
  assert(!chrono::weekday{8}.ok());
}

出力

バージョン

言語

  • C++20

処理系

  • Clang: 8.0 (値7は0にならない) , 10.0
  • GCC: 9.2
  • Visual C++: 2019 Update 3

参照

  • P1466R3 Miscellaneous minor fixes for chrono
    • C++20で新規追加されるこの機能の策定中では、当初は日曜日ではじまり土曜日までの範囲をサポートしていた (tm_wday仕様の曜日範囲[0, 6])。C++20の仕様が固まった段階では、ISO 8601で規定される、月曜日ではじまり日曜日までの曜日範囲 ([1, 7]) もサポートすることになり、値範囲[1, 7]を値範囲[0, 6]に変換する仕様が追加された