Дополнение true равно true, кроме случаев, когда оно false

The complement of true is true, except when it's false

Дополнение true равно true, кроме случаев, когда оно false

Разбираем предложение P4313R1 о битовых операциях для enum в C++26 и неожиданные последствия целочисленного продвижения. Для bool и enum на его основе операция ~true может дать true из-за преобразования в int и обратно, но GCC вопреки стандарту возвращает false. Также всплывает неопределённое поведение при приведении результата к enum без фиксированного базового типа. Автор показывает, как избежать ловушек в своём коде.

Вот так, дополнение true равно true, или на C++ static_cast<bool>(~true) == true.

Ещё за этот день

2026-10-06