Оператор != не подходит потому, что в С++ есть неявное преобразование из 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))
Но хотелось бы в форме оператора.
Ну и опять-таки, ^^=...
А про то, что можно обойтись условными операторами и пр. — когда можно, а когда и нет. Знаете, есть дискретная математика, всякие так КНФ, ДНФ и пр. самые настоящие вычисления, только не с числами, а с булевскими переменными.
Posted via RSDN NNTP Server 1.6 beta