GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — compare - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. compare

最終更新日時: 2026年08月14日 15時05分52秒 (JST)
Akira Takahashi が更新

履歴 編集

<compare>

compare(C++20)

概要

<compare>ヘッダでは三方比較演算子<=>の戻り値型である比較カテゴリ型、及び一貫比較に関連するコンセプトや関数等を提供する。

比較カテゴリ型を返す<=>を利用する際は本ヘッダのインクルードは必須である。

フリースタンディング

このヘッダは、フリースタンディング処理系でも使用できる。本ヘッダが提供する全ての機能がフリースタンディング処理系で使用可能である。

代入可能性(substitutability)

代入可能性とは、a == bならばf(a) == f(b)となる性質の事である。なお、ここでのf()は内部状態や副作用を持たず入力のアクセス可能な要素のみによって出力が決まる関数で、pureな関数と呼ばれるものである。

strong_orderingを返す<=>における同値比較がこの性質を満たしていることを表明する。このカテゴリを返す<=>を実装する際はこれらの性質を満たすように実装する必要がある。

数学の言葉ではこの性質は代入原理(Substitution property)と呼ばれ、これを満たす同値関係のことを特に相当関係と呼ぶ。
また、相当関係による同値類(ある集合上でa == bとなる要素を集めて出来る集合)を考えれば、それら同値類のどれを取ってもその要素はただ1つだけとなる。その意味から、相当関係は最も細かい同値関係とも呼ばれる。

比較カテゴリ型

名前 説明 対応バージョン
partial_ordering 半順序関係を表す比較カテゴリ型 C++20
weak_ordering 弱順序関係を表す比較カテゴリ型 C++20
strong_ordering 全順序関係を表す比較カテゴリ型 C++20

三方比較の結果型

名前 説明 対応バージョン
common_comparison_category 指定された全ての型の共通比較カテゴリ型を求める C++20
compare_three_way_result 指定された型の間での<=>による比較結果の型を求める C++20

型の順序

名前 説明 対応バージョン
type_order 2つの型の間の実装定義の全順序を取得する (class template) C++26

コンセプト

名前 説明 対応バージョン
three_way_comparable 指定された型が<=>による比較が可能であり、結果が指定した比較カテゴリ型に変換可能である C++20
three_way_comparable_with 指定された型の間で<=>による比較が可能であり、結果が指定した比較カテゴリ型に変換可能である C++20

名前付きの比較関数

名前 説明 対応バージョン
is_eq a <=> bの比較結果がa == bであるかを取得する C++20
is_neq a <=> bの比較結果がa != bであるかを取得する C++20
is_lt a <=> bの比較結果がa < bであるかを取得する C++20
is_lteq a <=> bの比較結果がa <= bであるかを取得する C++20
is_gt a <=> bの比較結果がa > bであるかを取得する C++20
is_gteq a <=> bの比較結果がa >= bであるかを取得する C++20

比較関数オブジェクト

名前 説明 対応バージョン
compare_three_way ポインタ比較時のみ実装定義の狭義全順序によって、その他の場合はデフォルトの三方比較を行う C++20
strong_order 全順序による三方比較を行う(カスタマイゼーションポイントオブジェクト) C++20
weak_order 弱順序による三方比較を行う(カスタマイゼーションポイントオブジェクト) C++20
partial_order 半順序による三方比較を行う(カスタマイゼーションポイントオブジェクト) C++20
compare_strong_order_fallback <=>が無い場合でも< ==を用いて全順序による三方比較を行う(カスタマイゼーションポイントオブジェクト) C++20
compare_weak_order_fallback <=>が無い場合でも< ==を用いて弱順序による三方比較を行う(カスタマイゼーションポイントオブジェクト) C++20
compare_partial_order_fallback <=>が無い場合でも< ==を用いて半順序による三方比較を行う(カスタマイゼーションポイントオブジェクト) C++20

バージョン

言語

  • C++20

処理系

  • Clang: 8.0 ✅
  • GCC: 10.1 ✅
  • Visual C++: 2019 ✅

関連項目

  • C++20 <=>/==による比較演算子の自動定義

参照

  • P0768R1 Library support for the spaceship (comparison) operator
  • P1614R2 The Mothership has Landed (Adding <=> to the Library)
  • P1959R0 Remove std::weak_equality and std::strong_equality
  • P1855R0 Make <compare> freestanding
  • P2404R3 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.