Namespaces
Variants

std::compare_partial_order_fallback

ja.cppreference.net より
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変長引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)(C++20)(C++20)    
(C++20)
swap および 型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
共通語彙型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
ヘッダ <compare>
inline namespace /* unspecified */ {
    inline constexpr /* unspecified */
        compare_partial_order_fallback = /* unspecified */;
}
で定義 (C++20以上)
呼び出しシグネチャ
template< class T, class U >
    requires /* see below */
constexpr std::partial_ordering
    compare_partial_order_fallback( T&& t, U&& u ) noexcept(/* see below */);
(C++20以上)

部分式 と t に対して三方比較を行い、u 演算子が利用できない場合でも、型 の結果を生成します。<=>

もし std::decay_t<T> と std::decay_t<U>> が同じ型である場合、std::compare_partial_order_fallback(t, u) は以下と式等価です:

  • std::partial_order(t, u) が適格な式である場合、;
  • そうでなければ、t == u ? std::partial_ordering::equivalent :
    t < u ? std::partial_ordering::less :
    u < t ? std::partial_ordering::greater :
             std::partial_ordering::unordered
    という式。ただし、式 t == u、t < u、u < t がすべて適格であり、decltype(t == u)、decltype(t < u)、decltype(u < t) がそれぞれ boolean-testable をモデル化する場合に限ります。ただし、t と u は一度だけ評価されます。

それ以外のすべての場合、std::compare_partial_order_fallback(t, u) は不適格であり、テンプレートのインスタンス化の直接の文脈に現れた場合、置換失敗 を引き起こす可能性があります。

カスタマイゼーションポイントオブジェクト

名前 std::compare_partial_order_fallback は カスタマイゼーションポイントオブジェクト を表し、これは 関数オブジェクト のconstな リテラル semiregular クラス型である。詳細は CustomizationPointObject を参照。

例

欠陥報告

以下の動作変更に関する欠陥報告書は、以前に公開されたC++標準に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2114
( P2167R3 )
C++20 フォールバック機構は戻り値の型が
bool に変換可能であることのみを要求
制約が強化された
LWG 3465 C++20 フォールバック機構は u < t が well-formed であることを要求していなかった 要求されるようになった
LWG 4157 C++20 P2167R3 が LWG issue 3465 の解決を上書きした 解決が復元された

関連項目

3方向比較を実行し、型 std::partial_ordering の結果を生成する
(カスタマイゼーションポイントオブジェクト)