你说得对,编译器优化最终以observable behavior而不是sequence point为依据。
不知道什么编译器会对这个搞天马行空的优化
if(x.load()==10)
{
y.store(10)
}
【 在 ilovecpp 的大作中提到: 】
: sequence point / sequencing限定的是单线程代码理论上(“在C++虚拟机上”)的运行过程,它从来不限制实际生成代码的运行过程。编译器生成的代码只需要和标准在单线程的“可观测行为”(i.e.库函数调用)上一致。极端的例子,编译器理论上可以把你算pi的前100位的程序生成为直接打印答案。
--
FROM 125.35.121.*