文章用一个经典例子讲清改动:在 C++26 之前,while (true); 这类没有副作用也没有前向进展保证的循环属于未定义行为,编译器可以假设它会终止,Clang 甚至直接把循环删掉,于是 main 继续往下走,链接器放在后面的 unreachable() 函数被顺带执行,屏幕上莫名打印出 Hello world!。这不是编译器 bug,而是 UB 的后果。C++26 通过提案 P2809R3 规定这类显然的无限循环不再是未定义行为,同一提案还被接受为缺陷报告,因此实现方可以把修复回溯到更早的 C++ 模式,这也解释了为什么在新编译器上即便用 C++20 模式也可能复现不出旧行为。文章顺带回顾了自 C++11 引入前向进展保证以来的来龙去脉。