最終更新日時: 2025年07月09日 17時29分52秒 (JST)
Akira Takahashi が更新

履歴 編集

function template
<chrono>

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

    namespace std::chrono {
      template <class Rep1, class Period1, class Rep2, class Period2>
           requires three_way_comparable<
             typename common_type_t<
               duration<Rep1, Period1>,
               duration<Rep2, Period2>
             >::rep
           >
      constexpr auto
        operator<=>(const duration<Rep1, Period1>& lhs,
                    const duration<Rep2, Period2>& rhs);  // (1) C++20
    }

## 概要

三方比較を行う

## 戻り値

2つの`duration`の単位を合わせた上で、`count()`の三方比較を行う。

    using ct = common_type<decltype(lhs), decltype(rhs)>::type;
    return ct(lhs).count() <=> ct(rhs).count();

## 例

    #include <cassert>
    #include <chrono>

    using namespace std::chrono;

    int main()
    {
      assert((seconds{3} <=> seconds{3}) == 0);
      assert((seconds{3} <=> milliseconds{3000}) == 0);
    }

### 出力

## バージョン

### 言語

- C++20

### 処理系

- Clang:
- GCC: 10 ✅
- Visual C++: ??

## 参照

- P1614R2 The Mothership has Landed
  - C++20での三方比較演算子の追加と、関連する演算子の自動導出