Namespaces
Variants

std::ranges:: less

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
ヘッダーで定義 <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 への変換シーケンスが 等価性保存 でない場合、動作は未定義。
  • それ以外の場合:

このオーバーロードは、 std:: totally_ordered_with < T, U > が満たされる場合にのみオーバーロード解決に参加する。

T の式 expr1 と型 U の式 expr2 が存在し、 expr1 expr2 の比較結果が 厳密な全順序 (規則は下記で定義)に違反する場合、動作は未定義。

expr1 expr2 の比較結果が厳密な全順序に従うのは、以下の式のうち 厳密に1つ true である場合に限る:

注記

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
(クラステンプレート)