Hacker News Front Page · Matthew Taylor ·
The complement of true is true, except when it's false
El complemento bit a bit de `true` produce un valor que, al convertirse de nuevo a `bool`, sigue siendo `true`, debido a las promociones integrales y a las reglas de conversión booleana de C++. El texto explica cómo estas reglas pueden causar resultados confusos y comportamiento indefinido al implementar operaciones bitmask para enums, y documenta discrepancias entre GCC, Clang y MSVC. También propone restricciones para evitar casos problemáticos, como los enums basados en `bool` y los enums sin tipo subyacente fijo.
Consequences of integral promotion, UB on unscoped enums, and why boolean conversion is surprising.