在init-declarator情况下, full-expression 的定义被称为“包括”初始化程序的组成表达式以及所应用的任何转换/被隐式调用(构造函数)。这意味着全表达式甚至不必是表达式,这没有意义,因为它被称为一个表达式(init-declarator不是表达式)。此外,在标准中,将完整表达式当作一个表达式使用,那么,如果它可以包含不相交的表达式,甚至不是表达式的内容,那又有什么意义呢?
无论如何,我的主要问题是,为什么不总是表达式的全表达式被视为表达式?那应该如何工作?
答案 0 :(得分:6)
这意味着全表达式甚至不必是表达式
的确确实如此。全表达式不一定是表达式。对于init-declarator,它是一个声明符。
在该标准的早期版本中,将全表达式指定为专门的表达式,但是“某些上下文会导致对由句法构造其他产生的全表达式的求值。比表达” 。我尚未阅读建议更改措辞的提案。
那有什么意义
以令人困惑和困惑的方式。这不是命名不当的唯一情况。该标准中有很多类似的例子:
就像全表达式一样,它们在直观上并没有多大意义,但这是无论如何指定语言的方式。
我已经在我的SO个人资料中列出了这些内容,由于这个问题,我添加了一个新的内容。