cppreference指出:
A constexpr specifier used in an object declaration or non-static member function (until C++14) implies const.
“对象声明”是指“任何变量声明”吗?
即是
constexpr const int someConstant = 3;
相当于
constexpr int someConstant = 3;
在 C++11、C++14 和 C++17 中?
最佳答案
在带有原语的声明中,例如您示例中的声明,const
确实是多余的。但是,可能会有一些奇怪的情况需要 const
,例如
constexpr int someConstant = 3;
constexpr const int *someConstantPointerToConstant = &someConstant;
这里,someConstantPointerToConstant
既是一个constexpr
(即它在编译时已知,因此是constexpr
),也是一个指向常量的指针(即它的对象不能改变,因此 const
)。如果省略 const
( demo ),上面的第二个声明将无法编译。
关于c++ - 变量上的 `const constexpr` 是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50609668/