私はこのようなC++クラスがあります。このように使用されてコンパイラはメソッド呼び出しを最適化できますか?
class MyClass {
int calculate(int arg1) const;
void side_effect(int arg) const;
}
:
{
MyClass m;
m.calculate(100);
m.side_effect(100);
}
は、コンパイラの自由がm.calculate()
呼び出しをスキップです - 私は、戻り値を保持しないので? side_effect()
メソッドについては、コンパイラが呼び出しをスキップできないことを本当に願っています - メソッドにはconst
とマークされていますが?
編集:私はこの質問を理由は、私のcalculate()
関数が副作用を持っていますが、mutable
を使用して、それがconst
としてマークされていることです。さて、通常の場合、私は戻り値を保持したい、そして全体的な問題は疑問ですが、上記の例では、副作用が呼び出されたことを確かめることにのみ関心があります(はい - それはかなり...)。回答/コメントを読む私は、コンパイラがメソッドに副作用があるかどうかを推測できると感じています。それは私には驚きでしたか?
結果は、関数が呼び出されたときと同じでなければなりません。効果がない場合は、どのように違いを伝えることができますか? –