Wpis z mikrobloga

konto usunięte via Wykop Mobilny (Android)
  • 0
Jak pewnie wiedzą śledzący prace Komitetu nad #cpp20, oprócz wielu naprawdę ciekawych i przydatnych zmian (Concepts, format) wprowadza również coś takiego jak spaceship operator <=>, o którym więcej np. tutaj:
tekst

Może mi ktoś z szanownych kolegów wytłumaczyć co to daje i po co jest? Jedyna sensowna odpowiedź, którą znalazłem, to że ten operator jest uogólnieniem wszystkich pozostałych (<, <= itp.), ale nie jest to dla mnie wystarczający powód wprowadzania kolejnego operatora, szczególnie tak specyficznego i po prostu niepotrzebnego ( ͡° ʖ̯ ͡°)

#cpp
  • 7
@frogi16: operator <=> jest głównym zastępcą api znanego z języka c, gdzie x < 0 => l < r, x = 0 => l == r i x > 0 -> l > r. Operator <=> wprowadza specialne wartości, które jasno oznaczają wynik. Dodatkowo masz różne typy porządków. Fajnie, że jest to w jęzku, bo do tej pory musialeś wszystko implementować sam, gdy takie rozwiązanie jest ci akurat potrzebne
@frogi16: Implementujesz jeden operator dla swojego typu i masz z głowy wszystkie inne - <, <=, >=, >, !=. W dodatku jedna implementacja zmniejsza ryzyko błędów, a te potrafią być bardzo paskudne. Dla przykładu, użycie w std::set czy std::map typu który nie ma prawidłowego zdefiniowanego weak ordering może prowadzić do zaskakujących błędów.