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