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

履歴 編集

function
<chrono>

std::chrono::weekday::コンストラクタ(C++20)

weekday() = default;                                       // (1) C++20
constexpr explicit weekday(unsigned int wd) noexcept;      // (2) C++20
constexpr weekday(const sys_days& dp) noexcept;            // (3) C++20
constexpr explicit weekday(const local_days& dp) noexcept; // (4) C++20

weekday(const weekday&) = default;                         // (5) C++20
weekday(weekday&&) = default;                              // (6) C++20

概要

  • (1) : デフォルトコンストラクタ
  • (2) : 曜日の整数値を指定してweekdayオブジェクトを構築する
  • (3) : 指定されたシステム日付に対応する曜日から、weekdayオブジェクトを構築する
  • (4) : 指定されたローカル日付に対応する曜日から、weekdayオブジェクトを構築する
  • (5) : コピーコンストラクタ
  • (6) : ムーブコンストラクタ

効果

  • (1) :
    • デフォルト初期化では符号なし整数の未初期化値となり、値初期化では値0となる
  • (2) :
    • wdの値が7であれば0に変更し、そうでなければwdの値をそのままに、メンバ変数として保持する
      • [月曜日, 日曜日]の範囲を[日曜日, 土曜日]の範囲に変換
    • wdの値範囲が[0, 255]に含まれなければ、保持される値は未規定
  • (3) : システム日付dpに対応する曜日の値を、メンバ変数として保持する
  • (4) : ローカル日付dpに対応する曜日の値を、メンバ変数として保持する

例外

投げない

#include <cassert>
#include <chrono>

using namespace std::chrono;

int main() {
  weekday w1{0};
  assert(w1 == Sunday);

  weekday w2{1};
  assert(w2 == Monday);

  weekday w3{7};
  assert(w3 == Sunday);

  weekday w4{sys_days{1970y/January/1}};
  assert(w4 == Thursday);

  weekday w5{local_days{1970y/January/1}};
  assert(w5 == Thursday);
}

出力

バージョン

言語

  • 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]に変換する仕様が追加された