Um bool não inicializado pode causar uma falha no programa em C++?
Olá! Recentemente comecei a estudar C++ e me deparei com uma situação estranha. Tenho este código:
```cpp
#include
int main() {
bool flag; // não inicializado
if (flag) {
std::cout << "True" << std::endl;
} else {
std::cout << "False" << std::endl;
}
return 0;
}
```
No meu compilador (g++ no Ubuntu) ele imprime consistentemente "False", e o programa funciona normalmente. Mas ouvi dizer que usar variáveis não inicializadas é undefined behavior. Isso significa que o programa pode realmente falhar? Afinal, bool é apenas um byte que pode ser 0 ou 1, e mesmo que contenha lixo, a verificação de true/false deveria funcionar, certo?
Estou particularmente interessado no caso de compilação com LLVM/Clang. Li que lá podem haver otimizações que fazem algo inesperado com bool. O compilador pode gerar código que cause segmentation fault ou loop infinito? Ou isso é tudo teó