在 C++11 标准 (N3690) 的最新草案中有 11 处对该表达式core constant expression
的引用,它们都没有定义该实体是什么。
人们还可以发现,这里core constant expression
的表达式定义得很好,基本上与标准用来定义表达式的术语相同。conditional-expression
因此,我想就这个问题获得一些意见,在我看来,这在标准中是错误的。
现在,假设cppreference中的定义是正确的,我还想知道为什么下面的代码片段在Coliru和Ideone中编译,尽管提到的定义中有第 (10) 项?
#include <iostream>
int main()
{
const double x = 2.;
constexpr double y = x;
std::cout << y << std::endl;
}
我特别考虑表达式中的lvalue to rvalue implicit conversion
of 变量,上面提到的第 (10) 项中的 (a)、(b) 和 (c) 中的任何一个子句都没有涵盖该变量。x
constexpr double y = x;
谢谢您的帮助。