2

我在 GitHub 上查看这篇文章,但我无法理解 OP 的含义:

"full expression" suggest that it is a kind of expression, but sometimes it is not.

我的解释是“完整表达式”(标准中使用的术语)可能不是表达式。[intro.execution]/5 给出了完整表达式的定义,如下:

完整表达式是(5.1) - 未计算的
操作数 (8.2),
(5.2) - 常量表达式 (8.6),
(5.3) - init-declarator (Clause 11) 或 mem-initializer (15.6.2) ,包括初始值设定项的组成表达式,
(5.4) — 在对象的生命周期结束时生成的析构函数的调用,而不是临时对象 (15.2),或
(5.5) — 不是子表达式的表达式另一个表达式,它不是完整表达式的一部分。

如果我的解释是正确的,我想知道上面的哪个项目符号产生了一个不是表达式的完整表达式。否则,即,如果我错了,他的评论是什么意思?

4

1 回答 1

1

表达式的正式列表可以在[gram.expr]中找到。这是相当多的文本,所以我不打算在这里包含它,但使用它我们可以看到init-declaratormem-initializer不是根据语法的表达式。这意味着即使init-declaratormem-initializer被认为是完整的表达式,在语法上它们不是表达式。

于 2019-05-20T13:21:49.030 回答