`核心常量表达式`vs`常量表达式`

时间:2015-12-24 06:22:51

标签: c++ language-lawyer c++14 constant-expression

核心常量表达式的定义取决于常量表达式的概念,如子弹点(2.7.1)和(2.9.1)中所示。 N4140。

§5.19/ 2:

  

条件表达式e核心常量表达式,除非   评估e,遵循抽象机器的规则(1.9),   将评估以下表达式之一:

...

  

(2.7.1) - 整数或枚举类型的非易失性glvalue   是指具有先前初始化的非易失性const对象,   用常量表达式

初始化

...

  

(2.9.1) - 用常量表达式

初始化

常量表达式的定义取决于核心常量表达式的概念,如N4140的§5.19/ 4中所示:

  

常量表达式 是glvalue 核心常量   表达式,其值指的是具有静态存储的对象   持续时间或函数,或prvalue 核心常量表达式   其值为对象,对于该对象及其子对象:
  ...

这似乎违背了数学逻辑的基本原则。

1 个答案:

答案 0 :(得分:1)

这些定义是相互递归的,但实际上并不是循环的。