cppreference声明:
在对象声明或非静态中使用的constexpr说明符 成员函数(直到C ++ 14)暗示const。
“对象声明”是否意味着“任何变量声明”?
即。是
constexpr const int someConstant = 3;
相当于
constexpr int someConstant = 3;
在C ++ 11,C ++ 14和C ++ 17中?
答案 0 :(得分:5)
在使用基元的声明中,例如示例中的基础,const
确实是多余的。但是,可能会出现需要const
的奇怪情况,例如
constexpr int someConstant = 3;
constexpr const int *someConstantPointerToConstant = &someConstant;
这里,someConstantPointerToConstant
都是constexpr
(即它在编译时已知,因此constexpr
)并且它也是指向常量的指针(即它的对象不能因此被改变,const
)。上面的第二个声明不会在const
省略(demo)的情况下进行编译。
答案 1 :(得分:2)
const
在const constexpr
对象中是多余的。
“对象声明”是否意味着“任何变量声明”?
确实如此。
根据cppreference,变量或常量是一个对象:
变量是不是非静态数据的对象或引用 会员,由声明引入。