の古典的な例の問題を理解しています
int i=0;
foo(i++, i++);
しかし、私は以下が有効か無効かについて自分自身を納得させることができません
int foo(int& i)
{
i=42;
return 99;
}
bar(foo(i), i);
「foo(i)」と「i」が評価される順序が定義されていないことは理解していますが、「評価される」とは正確にはどういう意味ですか? つまり、bar の 2 番目のパラメーターは常に 42 になりますか、それとも 'i' の現在の値を foo が変更する前に渡すことができますか?