Étant donné l'appel de fonction suivant :
f(g(), h())
puisque l'ordre d'évaluation des arguments de la fonction n'est pas spécifié (c'est toujours le cas en C++11 pour autant que je sache), une implémentation pourrait théoriquement exécuter g()
y h()
en parallèle ?
Une telle mise en parallèle ne pourrait se faire que si g
y h
sont connus pour être assez triviaux (dans le cas le plus évident, ils n'accèdent qu'aux données locales de leur corps) afin de ne pas introduire de problèmes de concurrence mais, au-delà de cette restriction, je ne vois rien qui l'interdise.
Alors, la norme l'autorise-t-elle ? Même si ce n'est que par la règle du " si " ?
(En <a href="https://stackoverflow.com/a/9116081/560648">cette réponse </a>Mankarse affirme le contraire ; cependant, il ne cite pas la norme, et ma lecture de l'étude de l <code>[expr.call]</code> n'a pas révélé de formulation évidente).