C++26: Trivial infinite loops are no longer undefined behaviour

Sandor Dargo's Blog · 4 days ago · discuss

Let’s start with a question! Is this program well-defined? int main() { while (true) ; } If you said yes, you’d be wrong — at least before C++26. A while (true); loop with no side effects used to be undefined behaviour. Compilers were free to assume it terminates, and some — Clang in particular — would optimize it away entirely, with spectacular consequences: // https://godbolt....