добавить логический оператор XOR (исключающее ИЛИ)
Сабж.
Предлагаю символ ^^ по модели остальных оперторов: & и &&, | и ||.
Для булевых аргументов в качестве исключающего ИЛИ работает !=, например:
const bool smart = isSmart();
const bool handsome = isHandsome();
const bool isPossible = smart != handsom;
Но всё равно в этом случае читаемость ниже плинтуса и парсинг физического смысла такого выражения будет не мгновенным.
Для типов кроме булева всё ещё грустнее, потому что != в отличие от логических операторов не делает контекстного преобразования в булев тип. Например, такое:
int i = 42;
void *ptr = nullptr;
const auto sadsob = i != ptr; // не работает
const auto visibledisgust = !!i != !!ptr; // *sigh*
С логическим исключающим ИЛИ имхо выглядит намного лучше:
int i = 42;
void *ptr = nullptr;
const auto uwu = i ^^ ptr;
Смысл && и || в том, что, зная левое значение, возможно не стоит вычислять правое, а сразу получить результат. В операции XOR это математически невозможно.
Неплохо бы еще иметь диграф для ^^
Правда, он не попадет под общий стиль:
& - bitand
&& - and
| - bitor
|| - or
^ - xor
^^ - ?????????
Варианты: bool_xor, xor_bool, xorxor, bxor;
либо несвязанное с xor название: ex_or (exclusive or).
int i = 42;
void *ptr = nullptr;
const auto uwu = i bool_xor ptr;
Мне нравится ex_or или bool_xor.
&&, || - это не "диграфы". Это основное написание операторов и оно не имеет альтернативного в виде диграфов.
Есть же !=. Чем не ^^?