Может быть, что-то более простое.
int xor(int a, int b)
{
return (!!a) ^ (!!b);
}
Я использую двоичный XOR. Но чтобы удостовериться, что переданные значения равны 0 или 1, я дважды логически отрицаю параметры.
Или как Eugene Sh.
упомянуто
bool xor(int a, int b)
{
return (!!a) != (!!b);
}
// OR if you want to use xor binary operator
bool xor(int a, int b)
{
return !!((!!a) ^ (!!b))
}
https://godbolt.org/z/NoCPbu