Namensräume
Varianten
Aktionen

std::experimental::ranges::greater_equal

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Allgemeine Dienstprogramme-Bibliothek
Hilfskomponenten
Funktionsobjekte
greater_equal
Metaprogrammierung und Typ-Traits
Getaggte Paare und Tupel
                          
Tag-Spezifizierer
                                      
                          
 
template< class T = void >

    erfordert StrictTotallyOrdered<T> ||
             Same<T, void> ||
             /* < auf zwei const T-Lvalues ruft einen eingebauten Operator auf, der Zeiger vergleicht */

struct greater_equal;
(Ranges TS)
template<>
struct greater_equal<void>;
(Ranges TS)

Funktionsobjekt für Vergleiche. Die Primärvorlage ruft operator< auf const lvalues vom Typ T auf und negiert das Ergebnis. Die Spezialisierung greater_equal<void> leitet die Parametertypen des Funktionsaufrufoperators aus den Argumenten ab (aber nicht den Rückgabetyp).

Alle Spezialisierungen von greater_equal sind Semiregular.

Inhalt

[edit] Member types

Mitgliedertyp Definition
is_transparent (nur Mitglied der Spezialisierung greater_equal<void>) /* nicht spezifiziert */

[edit] Member functions

operator()
prüft, ob das erste Argument *größer* als das zweite oder *gleich* ist
(öffentliche Memberfunktion)

std::experimental::ranges::greater_equal::operator()

constexpr bool operator()(const T& x, const T& y) const;
(1) (nur Mitglied der primären Vorlage greater_equal<T>)
template< class T, class U >

    erfordert StrictTotallyOrderedWith<T, U> ||
             /* std::declval<T>() < std::declval<U>() löst auf zu
               einem eingebauten Operator, der Zeiger vergleicht */

constexpr bool operator()(T&& t, U&& u) const;
(2) (nur Mitglied der Spezialisierung greater_equal<void>)
1) Vergleicht x und y. Äquivalent zu return !ranges::less<>{}(x, y);.
2) Vergleicht t und u. Äquivalent zu return !ranges::less<>{}(std::forward<T>(t), std::forward<U>(u));.

[edit] Notes

Im Gegensatz zu std::greater_equal erfordert ranges::greater_equal, dass alle sechs Vergleichsoperatoren <, <=, >, >=, == und != gültig sind (über die Einschränkungen StrictTotallyOrdered und StrictTotallyOrderedWith) und ist vollständig in Bezug auf ranges::less definiert. Die Implementierung kann jedoch frei operator>= direkt verwenden, da diese Konzepte die Konsistenz der Ergebnisse der Vergleichsoperatoren erfordern.

[edit] Example

[edit] See also

Funktions-Objekt, das x >= y implementiert
(Klassen-Template) [bearbeiten]