优化器可以对C ++ const方法调用进行重新排序吗?

时间:2018-11-26 22:18:21

标签: c++ const compiler-optimization

This isocpp.org FAQ关于常数的说法:

  

(...)让我们精确地确定一种方法是否会更改对象的逻辑状态。如果您不在课堂上-您是普通用户,则无论您是否首先进行实验,您可以执行的每个实验(调用的每个方法或方法序列)都将具有相同的结果(相同的返回值,相同的异常或没有异常)称为该查找方法。如果查找函数改变了任何将来方法的任何将来的行为(不仅使其更快,而且改变了结果,改变了返回值,改变了异常),那么查找方法就改变了对象的逻辑状态-它是一个可变器。但是,如果查找方法除了使某些事情变快之外没有改变,那就是检查器。

似乎表示,如果编译器不包括对volatiles的写入/对IO库函数的调用(甚至不包括缓存和省略),则它们可以自由假设对检查器的调用可以自由地重新排序。 )。是这样吗?

如果答案是否定的,那么是否有任何情况会使常量性通过允许编译器假定它无法证明的内容而进行某种优化? (似乎证明一个对象可能是const是微不足道的,但是在传递引用时它可能变得复杂吗?)

0 个答案:

没有答案