std::ranges::less
| ヘッダ <functional>
|
||
struct less;
|
で定義 (C++20 以上) | |
比較を行うための関数オブジェクト。関数呼び出し演算子の引数からパラメータ型を推定します(戻り値の型は除く)。
ネストされた型
| ネスト型 | 定義 |
is_transparent
|
unspecified |
メンバー関数
|
operator()
|
第1引数が第2引数より
小さい
かどうかをチェックする
(public member function) |
std::ranges::less:: operator()
|
template
<
class
T,
class
U
>
constexpr bool operator ( ) ( T && t, U && u ) const ; |
||
式 std::forward<T>(t)<std::forward<U>(u) を expr として与えられたとき:
-
-
変換後の t(型
P)が変換後の u(型P)より実装定義のポインタの厳密な全順序において先行する場合、true を返し、そうでなければ false を返す。 -
TからPへの変換シーケンス、またはUからPへの変換シーケンスが等価性保存でない場合、動作は未定義。
-
変換後の t(型
- それ以外の場合:
-
- expr の結果を返す。
- std::totally_ordered_with<T, U> がモデル化されない場合、動作は未定義。
このオーバーロードは、std::totally_ordered_with<T, U> が満たされる場合にのみオーバーロード解決に参加する。
型 T の式 expr1 と型 U の式 expr2 が存在し、expr1 と expr2 の比較結果が厳密な全順序(規則は下記で定義)に違反する場合、動作は未定義。
expr1 と expr2 の比較結果が厳密な全順序に従うのは、以下の式のうち厳密に1つが true である場合に限る:
- std::ranges::less{}(expr1, expr2)
- std::ranges::less{}(expr2, expr1)
- std::ranges::equal_to{}(expr1, expr2)
注記
std::less
とは異なり、
std::ranges::less
は6つの比較演算子すべて
<
、
<=
、
>
、
>=
、
==
および
!=
が(
totally_ordered_with
制約によって)有効であることを要求します。
例
|
このセクションは不完全です
理由: 例がありません |
欠陥報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3530 | C++20 | ポインタ比較時に構文チェックが緩和されていた | 意味論的な要件のみが緩和される |
関連項目
|
x < y を実装する関数オブジェクト
x
<
y
(クラステンプレート) |