使用g++ 4.8.2
编译以下代码,并使用-std=c++11
标志,可以无错误编译:
constexpr double C = 299792.458;
const double local_max = 3.5;
static_assert(local_max < C, "can't go that fast");
编译以下代码时出现错误:
constexpr double C = 299792.458;
double x = 3.5;
const double local_max = x;
static_assert(local_max < C, "can't go that fast");
错误信息:
我的问题是为什么第一个情况没有出错。a.cc: 在函数‘int main()’中:
a.cc:6:2: 错误:静态断言的非常量条件
static_assert(local_max < C, "can't go that fast");a.cc:6:2: 错误:‘local_max’的值在常量表达式中不可用
a.cc:5:15: 注意:‘local_max’未声明为‘constexpr’ const double local_max = x;
这是否取决于是否使用constexpr初始化const变量?