• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <exposition-only>

    synth-three-way-result

    constexpr auto synth-three-way =                           // (1) C++20
      []<class T, class U>(const T& t, const U& u)
        requires requires {
          { t < u } -> boolean-testable ;
          { u < t } -> boolean-testable ;
        }
      {
        if constexpr (three_way_comparable_with<T, U>) {
          return t <=> u;
        } else {
          if (t < u) return weak_ordering::less;
          if (u < t) return weak_ordering::greater;
          return weak_ordering::equivalent;
       }
    };
    
    template <class T, class U=T>
    using synth-three-way-result =
      decltype(synth-three-way(declval<T&>(), declval<U&>())); // (2) C++20
    

    概要

    • (1) : 型Tと型Uが三方比較可能であればそれを行い、そうでなければweak_orderingとして三方比較を実装して関数オブジェクト
    • (2) : synth-three-way-resultでの比較結果の型

    バージョン

    言語

    • C++20

    参照