Одна проблема с их использованием (для меня в любом случае) заключается в том, что в MSVC вы должны включить iso646.h
или использовать (в основном неиспользуемый) ключ / Za.
Основная проблема, с которой я столкнулся, - это Catch-22, который они обычно не используют, поэтому они требуют, чтобы мой мозг активно обрабатывал смысл, когда старомодные операторы более или менее укоренились (вроде как разница между чтением изученного языка и вашего родного языка).
Хотя я уверен, что преодолел бы эту проблему, если бы их использование стало более универсальным. Если бы это произошло, у меня возникла бы проблема, заключающаяся в том, что у некоторых логических операторов есть ключевые слова, а у других - нет, поэтому, если бы использовались альтернативные ключевые слова, вы могли бы увидеть такие выражения, как:
if ((x not_eq y) and (y == z) or (z <= something)) {...}
когда мне кажется, они должны иметь альтернативные токены для всех (хотя бы для сравнения) операторов:
if ((x not_eq y) and (y eq z) or (z lt_eq something)) {...}
Это связано с тем, что причина, по которой были предоставлены альтернативные ключевые слова (и орграфы и триграфы), заключалась не в том, чтобы сделать выражения более читабельными, - потому что исторически были (и, возможно, все еще существуют) клавиатуры и / или кодовые страницы в некоторых местах, которые не имеют определенных знаков препинания. Например, в инвариантной части кодовой страницы ISO 646 (неожиданно) отсутствуют символы '|
', '^
' и '~
' среди других.