Get the latest tech news

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


Let’s start with a question! Is this program well-defined? 1 2 3 4 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: 1 2 3 4 5 6 7 8 9 10 11 // https://godbolt.org/z/WYMxxeW1T #include <iostream> int main() { while (true) ; } void unreachable() { std::cout << "Hello world!" << std::endl; } In…

None

Get the Android app

Or read this on Hacker News

Read more on:

Photo of undefined behaviour

undefined behaviour

Photo of C++26

C++26

Related news:

News photo

C++26: Standard Library Hardening Experiments

News photo

Improvements to Std:Format in C++26

News photo

C++26: Reflection, Memory Safety, Contracts, and a New Async Model