Bel*_*loc 6 c++ language-lawyer c++14
[intro.execution]/15包含N4140第11页中的这些陈述(重点是我的):
当调用函数时(无论函数是否为内联函数),与任何参数表达式相关联的每个值计算和副作用,或者使用指定被调用函数的后缀表达式,都会在执行每个表达式或语句之前对其进行排序.叫功能.[注意:与不同参数表达式相关的值计算和副作用未被排序.-end note] 调用函数(包括其他函数调用)中的每个评估在执行被调用函数体之前或之后没有特别排序,对于被调用函数的执行是不确定的.9
9)换句话说,函数执行不会相互交错.
我想知道在调用函数的这些评估中,在执行被调用函数体之前没有具体排序的是什么?
*编辑*我在C++中的"序列之前"和"调用函数中的每个评估"这个问题中声明了两个答案,并没有任何关于我的问题.请阅读我的问题和其中给出的答案.另请参阅我对@CoryKramer下面给出的答案的评论.
*编辑2*这可能是我的问题的答案.见DR 1949中的第3号决议:
调用函数(包括其他函数调用)中的每个评估(在执行被调用函数体之前或之后没有特别排序)对于被调用函数的执行是不确定的顺序对于每个函数调用F,对于每个内F和不内˚F发生,但在相同的线程并作为同一信号处理程序(如果有的话)的一部分被评估每个评估乙发生时评价A,或者A B或B A之前进行测序之前进行测序9 [注意:如果A和B不会被测序,那么它们将被不确定地排序. - 尾注]
如果你有两个返回的函数int
int Foo();
int Bar();
Run Code Online (Sandbox Code Playgroud)
然后你就有了一些调用函数
void SomeFunction(int x, int y);
Run Code Online (Sandbox Code Playgroud)
然后调用代码看起来像
SomeFunction(Foo(), Bar());
Run Code Online (Sandbox Code Playgroud)
他们说Foo和的执行顺序Bar是不确定的。
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |