1.常量表达式,关键字constexpr。
2.此关键字将使用户能保证某个函数或构造器在编译期产生常量。如下:
constexpr intGetFive()
{
return 5;
}
int some_value[GetFive() + 5]; //create an arrayof 10 integers. legal C++0x
这段代码将使编译器理解并确认GetFive是个编译期常量。
2.1在函数上使用constexpr将对函数功能施加严格的限制:
首先,函数必须返回非void类型。
其次,函数体必须具有"return/expr/"的形式。
第三,expr在参数替换后必须是常量表达式。该常量表达式只能调用其他定义为constexpr的函数,只能使用其他常量表达式数据变量。
第四,常量表达式中一切形式的递归均被禁止。
最后,这种带constexpr的函数在编译单元中必须先定义后调用。
3.变量也可被定义为常量表达式值:
constexpr double forceOfGravity = 9.8;
constexpr doublemoonGravity = forceOfGravity / 6;
常量表达式数据变量隐含为常量。它们只能存放常量表达式或常量表达式构造器的结果。