Есть ли причина не использовать побитовые операторы &, |, и ^ для значений "bool" в С++?
Я иногда сталкиваюсь с ситуациями, когда я хочу, чтобы одно из двух условий было истинным (XOR), поэтому я просто бросаю оператор ^ в условное выражение. Я также иногда хочу, чтобы все части условия были оценены, является ли результат истинным или нет (вместо короткого замыкания), поэтому я использую and и. Мне также нужно иногда накапливать булевы значения, а & = и | = может быть весьма полезным.
Когда я делаю это, у меня есть несколько поднятых бровей, но код по-прежнему значим и чище, чем в противном случае. Есть ли какая-нибудь причина НЕ использовать их для bools? Есть ли современные компиляторы, которые дают плохие результаты для этого?