在C++11 primer中,关于constexpr用法给出的解释是:
允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化;
第一句中,constexpr会在编译之前就给出计算结果:
但是条件是:
或者用下面这种方式也是可以的:
但是当用不是常量的mf去做constexpr声明的x的常量表达式时 ,此时编译器不会有任何反应: