函数调用可以重新排序

时间:2015-06-02 21:26:51

标签: c++

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

我的具体案例是:

{
  RaiiType T;
  Object1.FunctionCall();
  Object2.FunctionCall();
}

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

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

1 个答案:

答案 0 :(得分:6)

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