std::experimental::ranges:: less
|
Definiert in Header
<experimental/ranges/functional>
|
||
|
template
<
class
T
=
void
>
requires StrictTotallyOrdered
<
T
>
||
|
(ranges TS) | |
|
template
<>
struct less < void > ; |
(ranges TS) | |
Funktionsobjekt zum Durchführen von Vergleichen. Die primäre Vorlage ruft
operator
<
auf const Lvalues des Typs
T
auf. Die Spezialisierung
less<void>
leitet die Parametertypen des Funktionsaufrufoperators aus den Argumenten ab (aber nicht den Rückgabetyp).
Alle Spezialisierungen von
less
sind
Semiregular
.
Inhaltsverzeichnis |
Mitgliedertypen
| Mitgliedstyp | Definition |
is_transparent
(nur Mitglied der
less<void>
Spezialisierung)
|
/* nicht spezifiziert */ |
Memberfunktionen
|
operator()
|
prüft, ob das erste Argument
kleiner
als das zweite ist
(public member function) |
std::experimental::ranges::less:: operator()
|
constexpr
bool
operator
(
)
(
const
T
&
x,
const
T
&
y
)
const
;
|
(1) |
(nur Mitglied der primären
less<T>
-Vorlage)
|
|
template
<
class
T,
class
U
>
requires StrictTotallyOrderedWith
<
T, U
>
||
|
(2) |
(nur Mitglied der
less<void>
-Spezialisierung)
|
t
und
u
. Entspricht
return
std::
forward
<
T
>
(
t
)
<
std::
forward
<
U
>
(
u
)
;
, außer wenn dieser Ausdruck zu einem Aufruf eines eingebauten
operator
<
für Zeigervergleiche aufgelöst wird.
Wenn ein Aufruf von
(1)
oder
(2)
einen eingebauten Operator zum Vergleichen von Zeigern des Typs
P
aufrufen würde, wird das Ergebnis stattdessen wie folgt bestimmt:
-
Gibt
true
zurück, wenn der (möglicherweise konvertierte) Wert des ersten Arguments dem (möglicherweise konvertierten) Wert des zweiten Arguments in der implementierungsdefinierten strengen Totalordnung über alle Zeigerwerte des Typs
Pvorausgeht. Diese strenge Totalordnung ist konsistent mit der durch die eingebauten Operatoren<,>,<=und>=auferlegten partiellen Ordnung. - Andernfalls wird false zurückgegeben.
Das Verhalten ist undefiniert, es sei denn, die Konvertierungssequenzen von
T
und
U
zu
P
sind gleichheitserhaltend (siehe unten).
Gleichheitserhaltung
Ein Ausdruck ist gleichheitserhaltend , wenn er bei gleichen Eingaben zu gleichen Ausgaben führt.
- Die Eingaben eines Ausdrucks bestehen aus seinen Operanden.
- Die Ausgaben eines Ausdrucks bestehen aus seinem Ergebnis und allen durch den Ausdruck modifizierten Operanden (falls vorhanden).
Jeder Ausdruck, der gleichheitserhaltend sein muss, muss außerdem stabil sein: Zwei Auswertungen eines solchen Ausdrucks mit denselben Eingabeobjekten müssen ohne explizite dazwischenliegende Modifikation dieser Eingabeobjekte gleiche Ausgaben haben.
Hinweise
Im Gegensatz zu
std::less
erfordert
ranges::less
alle sechs Vergleichsoperatoren
<
,
<=
,
>
,
>=
,
==
und
!=
gültig zu sein (über die
StrictTotallyOrdered
und
StrictTotallyOrderedWith
Constraints).
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
Funktionsobjekt, das
x
<
y
(Klassentemplate) |