什么时候C ++表达式很好?

时间:2014-08-15 23:20:06

标签: c++ c++11 language-lawyer c++14

通过C ++标准略读我在很多案例中提到了声明:

  

表达式X应该很好。

我对自己说“好吧,直觉上你知道一个结构良好的表达是什么,但是你能否正式解释是什么让C ++表达式成为一个良好的表达式?”。

我搜索了一下,但我没有发现任何可以对此事做出正式解释的内容。所以这是我的问题:

问: C ++中格式良好的表达式的定性特征是什么?

2 个答案:

答案 0 :(得分:7)

C ++ Standard没有定义格式良好的表达式,尽管它实际上使用了这个短语。有格式良好的程序

的定义
  

1.3.26 [defns.well.formed] 格式良好的计划   C ++程序根据语法规则,可诊断的语义规则和一个定义规则(3.2)构建。

我想我们可以假设格式良好的表达式是一个表达式,它不会使程序格式错误(在1.3.9中定义为格式不正确)。

答案 1 :(得分:4)

格式良好的表达式必须符合表达式(由标准定义)的语法,并且必须符合语义规则,例如不使用尚未声明的名称,或者不要在同一范围内重新声明具有不同含义的名称。

i = 0

X::i++

上面的表达式在语法上是有效的,但如果i尚未声明,或const,或X不是命名空间或类类型,或X::i尚未声明,或X::i不支持后增量,然后它们无法满足格式良好的表达式的语义要求。

  

问:C ++中格式良好的表达式的定性特征是什么?

请参阅第1至15条。您无法将整个C ++语言简化为简单列表。