C++11 关键字 constexpr
摘自 cppreference
跟const相似,修饰的值不能被改变。
constexpr 特点:constexpr指定的声明可以在编译时期求值,并且他的之不能被改变
但是 constexpr修饰的函数不一定能够在编译时期求值,如果他的参数能在编译时期求出来那么 函数值就在编译时期求出
如是在参数是要在运行时期才能求出,那么函数就和普通函数一致。
constexpr变量必须满足下列要求:
constexpr函数必须满足下列要求:
constexpr构造函数必须满足下列要求:
C++ 概念: LiteralType
指明一个类型为字面类型。字面类型是constexpr变量所拥有的类型,且它们能通过constexpr函数构造、操作及自之返回。
注意,标准没有定义拥有此名称的具名要求或概念。这是语言核心定义的类型。将它包含于此只是为了一致性。
要求
字面类型是是下列之一:
| (C++14 起) |
- 标量类型;
- 引用类型;
- 字面类型的数组;
- 可有cv限定的类类型,并拥有下列全部属性:
-
- 拥有平凡析构函数,
- 是以下之一
-
- 聚合体类型,
- 或拥有至少一个constexpr构造函数(可为模板)且非复制或移动构造函数,
| (C++17 起) |
| (C++17 起) |
| (C++17 前) |