次の関数呼び出しがあるとします。
f(g(), h())
関数の引数の評価の順序は指定されていないので(私が知る限り、C ++ 11の場合もそうです)、実装は理論的に並列に実行できg()
ますh()
か?
このような並列化はg
、並行性h
の問題を引き起こさないようにするために、かなり些細なこと(最も明白なケースでは、自分の体にローカルなデータにのみアクセスする)でしか開始できませんでしたが、その制限を超えると、それを禁止するものは何も見えません。
それで、標準はそれを許可しますか?as-ifルールだけでも?
(この回答では、Mankarseは別の方法で主張していますが、彼は標準を引用しておらず、私の読み過ごしでは[expr.call]
明白な表現は明らかにされていません。)