Moderní klíčová slova v C++: Požehnání nebo prokletí?

Od příchodu standardu C++11 jsme dostali do rukou několik elegantních a čitelnějších klíčových slov pro logické a bitové operace, jako jsou and, or, bitand a další. Tyto nové alternativy ke klasickým symbolům jako &&, || nebo & přinesly do jazyka svěží vítr. Místo tradičního zápisu:

if (x && y || z) {
    // ...
}

můžeme nyní psát:

if (x and y or z) {
    // ...
}

Výsledek? Kód je čistší, čitelnější a připomíná moderní programovací jazyky. V mnoha projektech, kde se tato klíčová slova používala, se čitelnost výrazně zlepšila. Na první pohled tedy skvělý krok vpřed.


Ale teď přichází háček…

S těmito klíčovými slovy se však do jazyka dostala i jedna z nejbizarnějších možností zápisu, která může způsobit chaos. Věděli jste, že následující kód je zcela validní C++?

void f(int and x) {
    // ...
}

void g(int bitand x) {
    // ...
}

Ano, and je jen jiný zápis pro && a bitand pro &, ale někdo se rozhodl, že by bylo „dobrý nápad“ povolit jejich použití i v deklaracích proměnných. Výsledek? Kód, který je noční můrou pro čitelnost a údržbu.


Co s tím?

Tato syntaxe je sice součástí standardu, ale její existence vyvolává otázky: Proč? Kdo to chtěl? A můžeme to prosím odstranit? Pro většinu vývojářů je to zbytečná komplikace, která spíše škodí, než pomáhá.

Co si o tom myslíte vy? Měli bychom tuto možnost v budoucích standardech odstranit, nebo je to jen drobná kuriozita, se kterou se dá žít? Diskutujme!