constexpr变量

C++11新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化:
Constexpr int mf=20;           //20是常量表达式
Constexpr int limit=mf+1;       //mf+1是常量表达式
Constexpr int sz=size();         //只有当size是一个constexpr函数时才是一条正确的声明
//语句
尽管指针和引用都能定义成constexpr,但它们的初始值却受到严格限制,一个constexpr指针的初始值必须是nullptr或者0,或者是存储于某个固定地址中的对象。
在constexpr 声明中如果定义了一个指针,限定符constexpr仅对指针有效,与指针所指的对象无关:
Const int *p=nullptr;           //p是一个指向整型常量的指针
Constexpr int *q=nullptr;        //q是一个指向整数的常量指针
P和q的类型相差甚远,p是一个指向常量的指针,而q是一个常量指针,其中的关键在于constexpr把它所定义的对象置为了顶层const;

原文地址:https://www.cnblogs.com/zztong/p/6695259.html