Здравствуйте, Евгений Коробко, Вы писали:
ЕК>Оператор != не подходит потому, что в С++ есть неявное преобразование из int в bool. ЕК>Отличие xor от bool должно быть в том, что xor принудительно приводит операнды к bool.
ЕК>int a=2,b=4;
ЕК>a xor b == false (a и b приводятся к true) ЕК>a!=b == true
ЕК>Т.е. ЕК>#define xor(a,b) (static cast<bool>(a)!=static cast<bool>(b))
ЕК>Но хотелось бы в форме оператора. ЕК>Ну и опять-таки, ^^=...
ЕК>А про то, что можно обойтись условными операторами и пр. — когда можно, а когда и нет. Знаете, есть дискретная математика, всякие так КНФ, ДНФ и пр. самые настоящие вычисления, только не с числами, а с булевскими переменными.
Да, но я не предлагаю сравнивать на неравенство два целых числа.
Я в своем примере писал !!а.
А если говорить о красивости... Не так часто сравниваются два логических выражния на равенство или неравенство, тем более, если имеет место неявное преобразование типов.
Не все в этом мире можно выразить с помощью нулей и единиц...