【发布时间】:2016-01-18 17:38:18
【问题描述】:
[intro.execution]/15 在 N4140 的第 11 页包含这些语句(重点是我的):
调用函数时(无论函数是否内联),每个 与任何参数相关的值计算和副作用 表达式,或带有指定被调用者的后缀表达式 函数,在执行每个表达式之前排序或 被调用函数的主体中的语句。 [注:值 与不同参数相关的计算和副作用 表达式是无序的。 ——尾注] 调用函数(包括其他函数调用)中的每个评估,在之前或之后没有特别排序 被调用函数体的执行是不确定的 相对于被调用的执行排序 函数。9
9) 换句话说,函数执行不会与每个 其他。
我想知道调用函数中的哪些评估在被调用函数的主体执行之前没有专门排序?
* 编辑 * 我声称"sequence before" and "Every evaluation in the calling function" in C++ 问题中的两个答案都与我的问题无关。请阅读我的问题和其中给出的答案。另请参阅我对@CoryKramer 下面给出的答案的评论。
* 编辑 2 * 这可能是我的问题的答案。请参阅DR 1949 中提出的第 3 号决议:
调用函数(包括其他函数调用)中没有特别说明的每个求值
在被调用函数的主体执行之前或之后排序 不确定地排序为
关于被调用函数的执行 对于每个函数调用 F,对于在 F 中发生的每个评估 A 和每个不在 F 内发生但在同一线程上评估并作为同一信号的一部分的评估 B处理程序(如果有),要么 A 在 B 之前排序,要么 B 在 A 之前排序。9 [注意:如果 A 和 B 不会被排序,那么它们是不确定的排序。 ——尾注]
【问题讨论】:
-
信号处理程序:[intro.execution] 1.9\6; [intro.multithread] 1.10\23.2; [support.runtime] 18.10\9 - 不是吗?无论如何,您可能对this article 感兴趣。虽然我不是这里的专家......
-
@EugeneZavidovsky 你似乎走在了正确的轨道上。请参阅上面我的 ** 编辑 2 **。
-
是的,但 CoryKramer 也是对的。有1.9\15。
标签: c++ language-lawyer c++14