我在GitHub中查看this post,但我不明白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)—初始化声明符(子句 11)或mem初始化程序(15.6.2),包括 初始化程序的表达式,
(5.4)—调用 在其他对象生命周期结束时生成的析构函数 比临时对象(15.2)或
(5.5)-不等于的表达式 另一个表达式的子表达式,否则不属于该表达式 全表达式。
如果我的解释正确,那么我想知道上面哪个要点会产生不是表达式的完整表达式。否则,即,如果我错了,OP对他的评论意味着什么?
答案 0 :(得分:1)
表达式的正式列表可以在[gram.expr]中找到。这是很多文本,所以我不在这里包括它,但是使用它我们可以看到 init-declarator 和 mem-initializer 不是表达式语法。这意味着即使 init-declarator 和 mem-initializer 被认为是完整表达式,但从语法上讲它们不是表达式。