Namensräume
Varianten
Aktionen

std::experimental::ranges::greater

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Allgemeine Dienstprogramme-Bibliothek
Hilfskomponenten
Funktionsobjekte
greater
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;
(Ranges TS)
template<>
struct greater<void>;
(Ranges TS)

Funktionsobjekt für Vergleiche. Die primäre Vorlage ruft operator< auf const-Lvalues vom Typ T mit vertauschter Argumentreihenfolge auf. Die Spezialisierung greater<void> leitet die Parametertypen des Funktionsaufrufoperators aus den Argumenten ab (nicht aber den Rückgabetyp).

Alle Spezialisierungen von greater sind Semiregular.

Inhalt

[bearbeiten] Member types

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

[bearbeiten] Member functions

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

std::experimental::ranges::greater::operator()

constexpr bool operator()(const T& x, const T& y) const;
(1) (nur Mitglied der primären greater<T>-Vorlage)
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<void>)
1) Vergleicht x und y. Äquivalent zu return ranges::less<>{}(y, x);.
2) Vergleicht t und u. Äquivalent zu return ranges::less<>{}(std::forward<U>(u), std::forward<T>(t));.

[bearbeiten] Notes

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

[bearbeiten] Example

[bearbeiten] See also

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