Namespaces
Variants

std:: compare_partial_order_fallback

From cppreference.net
Utilities library
ヘッダーで定義 <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::partial_ordering 型の結果を生成します。

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 ) は不適格となり、これはテンプレートのインスタンス化の直接の文脈で現れる場合に substitution failure を引き起こす可能性があります。

目次

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

名前 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 の結果を生成する
(カスタマイゼーションポイントオブジェクト)