最終更新日時: 2025年09月27日 16時11分47秒 (JST)
Raclamusi が更新

履歴 編集

function
<chrono>

# std::chrono::operator==(C++20)

    namespace std::chrono {
      constexpr bool operator==(const leap_second& x,
                                const leap_second& y) noexcept;        // (1) C++20

      template <class Duration>
      constexpr bool operator==(const leap_second& x,
                                const sys_time<Duration>& y) noexcept; // (2) C++20
    }

## 概要

等値比較を行う。

- (1) : `leap_second`オブジェクト同士の等値比較を行う
- (2) : `leap_second`オブジェクトと`sys_time`オブジェクトの等値比較を行う

## 戻り値

- (1) :

      return x.date() == y.date();

- (2) :

      return x.date() == y;

## 例外

投げない

## 備考

- この演算子により、`operator!=`が使用可能になる

## 例

    #include <iostream>
    #include <chrono>

    namespace chrono = std::chrono;
    using namespace std::chrono_literals;

    // うるう秒が挿入された日かを判定
    bool is_leap_second_day(chrono::year_month_day ymd) {
      chrono::sys_days days = ymd;
      for (const chrono::leap_second& x : chrono::get_tzdb().leap_seconds) {
        if (x == days) {
          return true;
        }
      }
      return false;
    }

    int main()
    {
      if (is_leap_second_day(1972y/7/1)) {
        std::cout << "1972/7/1 is a leap second day" << std::endl;
      }
    }

### 出力

    1972/7/1 is a leap second day

## バージョン

### 言語

- C++20

### 処理系

- Clang: 9.0 ❌
- GCC: 9.2 ❌
- Visual C++: 2019 Update 3 ❌