c++ - 变量上的 `const constexpr` 是多余的吗?

标签 c++ constexpr equivalent

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/

相关文章:

c++ - 与正在定义的类相同类型的静态 constexpr 成员

java - 是否有相当于 Java 的 "next[type]"扫描器的 ruby ?具体来说,一个停止照顾该类型的第一个实例的人?

list - 如何从 Dart 列表中删除相似的元素?

c++ - 为什么在增加 -fconstexpr-steps 后无法解析常量表达式?

c++ - 在 constexpr 中连接 string_views

C - 在没有 strcmp 的情况下测试字符串等价性

c++ - 使用 socketpair 时 SO_SNDBUF 的行为

c++ - 使用 QRegExp 的 Ingore 字符串

c++ - 创建具有相同名称的多个类对象? C++

c++ - 在 C++ 中清除键盘缓冲区