Namensräume
Varianten
Aktionen

std::experimental::ranges::less_equal

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

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

Alle Spezialisierungen von less_equal sind Semiregular.

Inhalt

[edit] Member types

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

[edit] Member functions

operator()
prüft, ob das erste Argument kleiner als oder gleich dem zweiten ist
(öffentliche Memberfunktion)

std::experimental::ranges::less_equal::operator()

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

[edit] Notes

Im Gegensatz zu std::less_equal erfordert ranges::less_equal, 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 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]