Namensräume
Varianten
Aktionen

std::partial_order

Aus cppreference.com
< cpp‎ | utility
definiert in Header <compare>
inline namespace /* unspecified */ {

    inline constexpr /* unspecified */ partial_order = /* unspecified */;

}
Call signature
template< class T, class U >

    requires /* see below */
constexpr std::partial_ordering

    partial_order(T&& t, U&& u) noexcept(/* see below */);

Vergleicht zwei Werte mittels 3-Wegevergleich und erzeugt ein Ergebnis vom Typ std::partial_ordering.

Seien t und u Ausdrücke, T und U definiert durch decltype((t)) bzw. decltype((u)), dann ist std::partial_order(t, u) ausdrucksäquivalent zu:

Inhaltsverzeichnis

[Bearbeiten] ausdrucksäquivalent

Der Ausdruck e ist ausdrucksäquivalent zum Ausdruck f, falls e und f die gleiche Wirkung haben, entweder beide Ausnahmen werfen können oder beide keine Ausnahmen werfen (d.h. noexcept(e) == noexcept(f)) und entweder beide konstante Unterausdrücke oder beide nicht-konstante Unterausdrücke.

[Bearbeiten] Anpassungspunkte

Der Name std::partial_order bezeichnet einen Anpassungspunkt, der ein konstantes Funktionsobjekt eines literalen semiregulären Klassentyp ist. Zu Darstellungszwecken wird die cv-unqualifizierte Version des Typs mit __partial_order_fn bezeichnet.

Alle Instanzen von __partial_order_fn sind gleich. Die Wirkung des Aufrufens von verschiedenen Instanzen vom Typ __partial_order_fn auf den selben Argumenten ist äquivalent, unabhängig davon ob der Ausdruck, der die Instanz bezeichnet, ein lokalisierbarer oder lesbarer Wert ist und ob er eine const-Qualifikation hat oder nicht. A volatile-qualifizierte Instance muß nicht aufrufbar sein.) . Dadurch kann std::partial_order frei kopiert werden und die Kopien können beliebig ausgetauscht werden.

Bei einer gegebenen Menge von Typen Args... bildet __partial_order_fn std::invocable<__partial_order_fn, Args...>, std::invocable<const __partial_order_fn, Args...>, std::invocable<__partial_order_fn&, Args...> und std::invocable<const __partial_order_fn&, Args...> ab, falls std::declval<Args>()... die obigen Anforderungen an Argumente von std::partial_order. Anderenfalls kein Funktionsaufrufoperator von __partial_order_fn nimmt an der Auflösung der Überladungen teil.

[Bearbeiten] Anmerkungen

[Bearbeiten] Beispiele

[Bearbeiten] Referenzen

der Ergebnistyp des 3-Wegevergleichs, der alle 6 Operatoren unterstützt, nicht ersetzbar ist und nichtvergleichbare Werte erlaubt
(Klasse) [edit]
führt einen 3-Wegevergleich und erzeugt ein Ergebnis vom Typ std::strong_ordering
(Anpassungspunkt) [edit]
führt einen 3-Wegevergleich durch und erzeugt ein Ergebnis vom Typ std::weak_ordering
(Anpassungspunkt) [edit]
führt einen 3-Wegevergeleich durch und erzeugt ein Ergebnis vom Typ std::partial_ordering auch wenn operator<=> nicht verfügbar ist
(Anpassungspunkt) [edit]