广义常量表达式 (C++11)
C++11 标准会泛化常量表达式的概念,并引入新的关键字
constexpr 作为声明说明符。 常量表达式是可以由编译器在编译时进行求值的表达式。 此功能的主要优点如下:- 提高需要编译时评估的代码的类型安全性和可移植性
- 改进对系统编程,库构建和通用编程的支持
- 提高标准库组件的易用性。 可以在编译时求值的库函数可以在需要常量表达式的上下文中使用。
带有
constexpr 说明符的对象声明将该对象声明为常量。 constexpr 说明符只能应用于以下上下文:- 对象的定义
- 函数或函数模板的声明
- 文字类型的静态数据成员的声明
如果您声明的函数不是具有 constexpr 说明符的构造函数,那么该函数是 constexpr 函数。 同样,如果使用 constexpr 说明符声明构造函数,那么该构造函数是 constexpr 构造函数。
通过此功能,常量表达式可以包括对模板和非模板 constexpr 函数的调用,类文字类型的 constexpr 对象以及与使用常量表达式初始化的 const 对象绑定的引用。
在编译时对浮点运算的求值使用 -qfloat 选项的缺省语义。