函数调用可以重新排序

Gra*_*rak 8 c++

我正在使用C++ 98.函数调用在多大程度上可以重新排序?我没有使用任何全局状态,只使用函数本地的对象状态.

我的具体情况是:

{
  RaiiType T;
  Object1.FunctionCall();
  Object2.FunctionCall();
}
Run Code Online (Sandbox Code Playgroud)

Object1和Object2在下一个范围内声明的位置.是否T允许在函数调用之后重新排序构造函数,假设它可以被简单地证明(至少对于人类)构造和函数调用之间没有依赖关系?


在我的特定情况下,RAII对象用于计算函数调用的执行时间.

Dav*_*rtz 6

只要符合标准的程序无法区分其可观察行为,编译器(以及系统中的其他组件)可以自由地重新排序它喜欢的指令和操作.