Může mi někdo vysvětlit, proč to vrací int a ne něco typově bezpečného? Chápu, že je to tradice, ale bavíme se o roku 2020.
Ono to vrací hodnotu typu, konkrétně std::strong_ordering
, std::weak_ordering
či std::partial_ordering
, které jsou jedním směrem na sebe konvertovatelné, a porovnatelné s 0. (viz https://en.cppreference.com/w/cpp/utility/compare/strong_ordering)
6. 12. 2019, 12:04 editováno autorem komentáře
V C-čku sa dá aritmerika zneužiť
ako napr..
int pfd [2];
pipe(pfd);
close(1);
close(2);
if ( (dup(pfd[1])+dup(pfd[1]) ) !=3 )
,,,,,
printf("Test do rury\n");
(dúfam že tam nemá byť opačný index pfd v if-e) . A viem nie je to korektné: ala tam byť dup2
A tento operátor sa dá na podobné veci zneužiť...
Kde jste získal informaci, že C++ operator <=> bude vracet int? Pokud se podívám např. zde https://en.cppreference.com/w/cpp/language/default_comparisons, tak se používaji speciální typy. Ano není to konkrétní návrh specifikace, nechce se mi to procházet, ale většinou tam ty popisy sedí.
Těžko Vám někdo vysvětlí, proč to vrací int, když to int nevrací.
https://en.cppreference.com/w/cpp/language/default_comparisons
Jak může být JavaScript považován za vzor a ideál typové bezpečnosti, když tam je všechno vlastně objekt a vše jde volat se vším? Proč asi vznikl TypeScript? Z hlediska typové bezpečnosti se právě volí jazyky se silnými typy. Silně typové jazyky pak zase řeší problém s psaním generického kódu což je u jazyků se slabými typy v podstatě výchozí stav.
Ten operátor by měl mít význam hlavně při jeho přetěžování. Psát blok všech variant je na pikaču
bool operator>(const T &other) const;
bool operator<(const T &other) const;
bool operator=>(const T &other) const;
bool operator=<(const T &other) const;
bool operator!=(const T &other) const;
bool operator==(const T &other) const;
vs
int operator<=>(const T &other) const;
Zavináč je v prakticky všech evropských jazycích arobáze, ale zavináč se holt už vžil. Ale když někdo vymyslí novou syntaxi, tak by ji měl nazvat nějak výstižně. Uznávám, že univerzální srovnávací operátor je dlouhé a krkolomné, ale třeba seřaďovací operátor by byl určitě lepší název, než kosmická loď (kde si navíc nejsem úplně jistý, že každého hned trkne, že to má být pohled na létající talíř ze strany).
Zavináč je v prakticky všech evropských jazycích arobáze
Fakt? Podívám se do (francouzské) wiki a rozhodně nelze říct "prakticky ve všech":
https://fr.wikipedia.org/wiki/Arobase
Ale je to zajímavé (není ani nutno umět francouzsky), na konci článku. Zavináč nijak nevybočuje z označení v jiných jazycích.
Hanlonova břitva - je to kombinace vyjadřovacích schopností angličtiny a neschopnosti jejích mluvčích, kdy si navíc o tom autoři myslejí, že je to děsně vtipné. Dle mého takové výrazivo do technického jazyku nepatří, neboť na rozdíl od přesných názvů nepřispívá srozumitelnosti. Korunu tomu pak nasadí „Češi“, kteří to tupě přeloží, aniž by se pokusili vytvořit a zavést termín, který je samovysvětlující.
No, víte, já pamatuju doby, kdy ke všemu MUSEL být český název (a šéf katedry byl významným členem komise, to bylo v diplomce a u státnic poněkud nebezpečné pole).
Jednu absurdní situaci z toho vyplývající si dovolím zde předložit:
Pánové propojili počítače (tuším ADT) přes paralelní rozhraní - mezi dvěma sály přes chodbu. A nastal problém s názvem. Selský rozum by navrhl "přenos dat", jenže pojem "přenos dat" komise již definovala, a to tak detailně, že do definice zapletli i provedení - tedy modem. Jenže tady žádný modem nebyl, takže to nakonec bylo nazváno "dálkový přenos dat".
S těmi samovysvětlujícími pojmy nesouhlasí ani klasikové české literatury, protože máme knížku "Muži v ofsajdu" a ne "Muži v postavení mimo hru".