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. - ist kein Vergleichskategorietyp.
Code: Select all
T - 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.
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 (ist std::partial_ordering), der synthetisierte Vergleich ist
Code: Select all
T
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
Außerdem verstehe ich nicht, wie ein brauchbarer Kandidat für die Überlastungsauflösung den synthetisierten Raumschiffoperator sowohl verhindert als auch zulässt.
Mobile version