C11 forward-progress rule (2011)
The C and C++ standards committees both introduced forward-progress guarantees in 2011. C added one more rule: loops whose controlling expression is a constant expression cannot be assumed to terminate. C++ did not.
`while (1);` became well-defined in C but undefined behavior in C++ from that day onward.
The two languages diverged for 13 years, with C++ compilers free to delete empty infinite loops while C compilers could not.
This divergence is the exact gap that P2809R3 closes. The C++ fix deliberately avoids copying C's broader rule, using a narrower definition to preserve optimization flexibility.
