c++ - C ++函数参数中的评估顺序

如果我们有三个函数(foo、bar和baz),它们是这样组成的…

foo(bar(), baz())

在BAZ之前,是否有任何保证通过C++标准来评估BAR?


最佳答案:

不,没有这样的保证。它是根据C++标准未指定的。
Bjarne Stroustrup还明确地在“C++编程语言”第三版第2.2.2节中给出了一些推理:
更好的代码可以在
无表达限制
估价单
尽管从技术上讲,这是指同一节的前面一部分,即表达部分的计算顺序也未指明,即。

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