Namespaces
Variants

std::compare_strong_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_strong_order_fallback = /* unspecified */;
}
で定義 (C++20以上)
呼び出しシグネチャ
template< class T, class U >
    requires /* see below */
constexpr std::strong_ordering
    compare_strong_order_fallback( T&& t, U&& u ) noexcept(/* see below */);
(C++20以上)

部分式 と t に対して三方比較を行い、型 ustd::strong_ordering の結果を生成します。これは、演算子 が使用できない場合でも機能します。 <=>もし

と std::decay_t<T> が同じ型である場合、std::decay_t<U> は以下とstd::compare_strong_order_fallback(t, u)式等価です: 、それが適格な式である場合;

  • std::strong_order(t, u)そうでない場合、
  • 式 t == u ? std::strong_ordering::equal :
    t < u ? std::strong_ordering::less :
             std::strong_ordering::greater
と t == u の両方が適格であり、かつ t < u と decltype(t == u) のそれぞれが decltype(t < u)boolean-testable をモデル化する場合。ただし と t は一度だけ評価されるものとします。uその他のすべての場合において、

は不適格であり、テンプレートのインスタンス化の即時コンテキスト内に現れた場合、std::compare_strong_order_fallback(t, u)置換失敗 を引き起こす可能性があります。

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

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

例

欠陥報告

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

DR 適用対象 公開時の動作 正しい動作
LWG 2114
( P2167R3 )
C++20 フォールバック機構は戻り値の型が
bool に変換可能であることのみを要求
制約が強化された

関連項目

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