【问题标题】:`core constant expression` vs `constant expression``核心常量表达式`与`常量表达式`
【发布时间】:2015-12-24 06:22:50
【问题描述】:

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

§5.19/2:

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

...

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

初始化

...

(2.9.1) — 用 常量表达式

初始化

常量表达式的定义依赖于核心常量表达式的概念,如N4140的§5.19/4中所见:

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

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

【问题讨论】:

  • 到底是什么问题?
  • 表达式可以包含其他表达式;这不是问题。
  • 它不违反逻辑,因为你的代码中的表达式形成了一个树,而不是一个循环图

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多