• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class
    <chrono>

    std::chrono::month_day_last

    namespace std::chrono {
      class month_day_last;
    }
    

    概要

    month_day_lastは、未規定の年の、月の最終日を表すカレンダー表現のためクラスである。

    2月の最終日が年によって異なることもあり、このクラスでは月の最終日が何日なのかは取得できない。そのためには、年情報を付加してyear_month_day_lastクラスに変換する必要がある。

    このクラスは等値比較および大小比較ができ、EqualityComparableおよびLessThanComparableの要件を満たす。

    このクラスは、トリビアルコピー可能で、かつスタンダードレイアウト型である。

    メンバ関数

    構築/コピー/破棄

    名前 説明 対応バージョン
    (constructor) コンストラクタ C++20
    month_day_last& operator=(const month_day_last&) = default;
    month_day_last& operator=(month_day_last&&) = default;
    代入演算子 C++20

    観測

    名前 説明 対応バージョン
    month 月要素を取得する C++20

    検証

    名前 説明 対応バージョン
    ok 値が範囲に収まっているか判定する C++20

    非メンバ関数

    カレンダー構文演算子

    名前 説明 対応バージョン
    operator/ カレンダー要素同士をつなぎ合わせる C++20

    比較演算

    名前 説明 対応バージョン
    operator== 等値比較を行う C++20
    bool operator!=(const month_day_last&, const month_day_last&) noexcept; 非等値比較を行う (==により使用可能) C++20
    operator<=> 三方比較を行う C++20
    bool operator<(const month_day_last&, const month_day_last&) noexcept; 左辺が右辺より小さいかを判定する (<=>により使用可能) C++20
    bool operator<=(const month_day_last&, const month_day_last&) noexcept; 左辺が右辺以下を判定する (<=>により使用可能) C++20
    bool operator>(const month_day_last&, const month_day_last&) noexcept; 左辺が右辺より大きいかを判定する (<=>により使用可能) C++20
    bool operator>=(const month_day_last&, const month_day_last&) noexcept; 左辺が右辺以上を判定する (<=>により使用可能) C++20

    入出力

    名前 説明 対応バージョン
    operator<< 出力ストリームに出力する C++20

    文字列フォーマットサポート

    名前 説明 対応バージョン
    formatter std::formatterクラスの特殊化 C++20

    ハッシュサポート

    名前 説明 対応バージョン
    template <class T> struct hash; hashクラスの先行宣言 C++26
    template<> struct hash<chrono::month_day_last>; hashクラスのmonth_day_lastに対する特殊化 C++26

    #include <iostream>
    #include <chrono>
    
    namespace chrono = std::chrono;
    using namespace std::chrono_literals;
    
    int main()
    {
      // すべて3月の最終日を表す
      chrono::month_day_last date1 = chrono::last/3;
      chrono::month_day_last date2 = chrono::March/chrono::last;
    
      chrono::month_day_last date3{chrono::March};
      chrono::month_day_last date4{chrono::month{3}};
    
      std::cout << date1 << std::endl;
      std::cout << date2 << std::endl;
      std::cout << date3 << std::endl;
      std::cout << date4 << std::endl;
    }
    

    出力

    Mar/last
    Mar/last
    Mar/last
    Mar/last
    

    バージョン

    言語

    • C++20

    処理系

    • Clang: 8.0 (出力ストリームなし)
    • GCC: 11.1 (出力ストリームなし)
    • Visual C++: 2019 Update 3

    参照