Benötigen Sie Hilfe beim Verständnis des synthetisierten Drei-Wege-Vergleichs?C++

Programme in C++. Entwicklerforum
Anonymous
 Benötigen Sie Hilfe beim Verständnis des synthetisierten Drei-Wege-Vergleichs?

Post by Anonymous »

Kann mir jemand helfen, diesen Teil von cppreference zu verstehen?
https://en.cppreference.com/w/cpp/sprac ... isons.html

Synthetischer Drei-Wege-Vergleich
Der Ein synthetisierter Drei-Wege-Vergleich vom Typ T zwischen den GL-Werten a und b desselben Typs ist wie folgt definiert:
  • Wenn die Überladungsauflösung für a b zu einem verwendbaren Kandidaten führt, kann dieser mithilfe explizit in T konvertiert werden static_cast, der synthetisierte Vergleich ist static_cast(a b).
  • Andernfalls ist der synthetisierte Vergleich nicht definiert, wenn eine der folgenden Bedingungen erfüllt ist:

    Die Überladungsauflösung für a b findet bei mindestens einen geeigneten Kandidaten.
  • Code: Select all

    T
    ist kein Vergleichskategorietyp.
  • Die Überladungsauflösung für a == b führt nicht zu einem verwendbaren Kandidaten.
  • Die Überladungsauflösung für a < b führt nicht zu einem verwendbaren Kandidaten.
[*]Andernfalls, wenn T ist std::strong_ordering, der synthetisierte Vergleich ist

Code: Select all

    a == b ? std::strong_ordering::equal :
a < b  ? std::strong_ordering::less :
std::strong_ordering::greater
  • Andernfalls, wenn T std::weak_ordering ist, lautet der synthetisierte Vergleich

Code: Select all

    a == b ? std::weak_ordering::equivalent :
a < b  ? std::weak_ordering::less :
std::weak_ordering::greater
  • Sonst (

    Code: Select all

    T
    ist std::partial_ordering), der synthetisierte Vergleich ist

Code: Select all

    a == b ? std::partial_ordering::equivalent :
a < b  ? std::partial_ordering::less :
b < a  ? std::partial_ordering::greater :
std::partial_ordering::unordered
Ich habe keine Ahnung, was genau mit synthetisiert gemeint ist. Bedeutet das, dass der Compiler einen Drei-Wege-Vergleichsoperator bereitstellt, auch wenn er nicht standardmäßig eingestellt ist?
Außerdem verstehe ich nicht, wie ein brauchbarer Kandidat für die Überlastungsauflösung den synthetisierten Raumschiffoperator sowohl verhindert als auch zulässt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post