1. ホーム
  2. c++

[解決済み] C++の関数パラメータにおける評価順序

2022-10-30 16:28:25

質問

3つの関数(foo, bar, baz)が以下のように構成されている場合...

foo(bar(), baz())

C++の標準では、barがbazの前に評価されるという保証はあるのでしょうか?

どのように解決するのですか?

いいえ、そのような保証はありません。C++の標準では未定義です。

Bjarne Stroustrup も "The C++ Programming Language" 第3版 6.2.2 節で、いくつかの理由とともにそれを明示しています。

より良いコードを生成するためには より良いコードを生成できる。 評価順序

技術的には、これは同じセクションの以前の部分を参照していますが、式の部分の評価の順序も不特定である、すなわち

int x = f(2) + g(3);   // unspecified whether f() or g() is called first