std::experimental::ranges:: equal_to
|
Definiert im Header
<experimental/ranges/functional>
|
||
|
template
<
class
T
=
void
>
requires EqualityComparable
<
T
>
||
|
(ranges TS) | |
|
template
<>
struct equal_to < void > ; |
(ranges TS) | |
Funktionsobjekt zum Durchführen von Vergleichen. Die primäre Template-Instanz ruft
operator
==
auf const Lvalues des Typs
T
auf. Die Spezialisierung
equal_to<void>
leitet die Parametertypen des Funktionsaufrufoperators aus den Argumenten ab (aber nicht den Rückgabetyp).
Alle Spezialisierungen von
equal_to
sind
Semiregular
.
Inhaltsverzeichnis |
Mitgliedertypen
| Mitgliedtyp | Definition |
is_transparent
(nur Mitglied von
equal_to<void>
Spezialisierung)
|
/* nicht spezifiziert */ |
Memberfunktionen
|
operator()
|
prüft, ob die Argumente
gleich
sind
(public member function) |
std::experimental::ranges::equal_to:: operator()
|
constexpr
bool
operator
(
)
(
const
T
&
x,
const
T
&
y
)
const
;
|
(1) |
(nur Mitglied der primären
equal_to<T>
-Vorlage)
|
|
template
<
class
T,
class
U
>
requires EqualityComparableWith
<
T, U
>
||
|
(2) |
(nur Mitglied der
equal_to<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ührt, der Zeiger vergleicht.
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
false
zurück, wenn einer der (möglicherweise konvertierten) Werte des ersten Arguments und der (möglicherweise konvertierte) Wert des zweiten Arguments in der implementierungsdefinierten strengen Totalordnung über alle Zeigerwerte des Typs
Pvor dem anderen steht. Diese strenge Totalordnung ist konsistent mit der durch die eingebauten Operatoren<,>,<=und>=auferlegten partiellen Ordnung. - Andernfalls (weder steht vor dem anderen) gibt true zurück.
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::equal_to
erfordert
ranges::equal_to
, dass sowohl
==
als auch
!=
gültig sind (über die
EqualityComparable
- und
EqualityComparableWith
-Constraints).
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
Funktionsobjekt, das
x
==
y
implementiert
(Klassentemplate) |