这是对Could a C++ implementation, in theory, parallelise the evaluation of two function arguments?的后续
假设我有以下C++ 11程序:
#include <cstdio>
using std::printf;
int g() { printf("1\n"); printf("3\n"); return 2; }
int h() { printf("2\n"); printf("4\n"); return 3; }
void f(int a, int b) { printf("%i\n", a+b); }
int main() { f(g(), h()); }
当然可以观察到以下输出:
1 3 2 4 5
2 4 1 3 5
1 2 3 4 5呢?
(据我所知,唯一的限制是1在3之前排序,2在4之前排序,而3和4都在5之前排序。)
最佳答案
C++ 03规范地说函数调用不交织。 C++ 11规范地说
两者都足以阻止这一点。