变量上的"const constexpr"是多余的吗?
Is `const constexpr` on variables redundant?
cppreference指出:
"对象声明">对象声明中使用的 constexpr 说明符或非静态 成员函数(直到C++14(意味着常量。
是指"任何变量声明"吗?
即
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
的情况下进行编译(演示(。
const
对于对象来说const constexpr
是多余的。
是指"任何变量声明"吗?
确实如此。
根据 cpp 首选项,变量或常量是一个对象:
变量是不是非静态数据的对象或引用 成员,即由声明引入。
相关文章:
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 为什么在C++使用常量函数时常量是多余的?
- 'char (*RtlpNumberOf(T (&)[N]))[N]':无法从"char *"
- Arduino IDE 错误 - 无法找到数字文字运算符"运算符""f900ff"
- 如果你在函数中包含 const,是多余的吗?
- "inline"、"constexpr"或"noexcept"
- 变量上的"const constexpr"是多余的吗?
- "非静态数据成员之前需要构造函数" - 我是否使用"boost::variant"
- 似乎多余的使用 cin 作为条件与 if,而
- std::make_move_iterator 自 C++17 的类模板参数推导以来是多余的吗?
- 我必须安装"libbitcoin-server"才能包含"bitcoin.hpp"
- C++ 函数将多余的空条目保存到文件中
- 处理 MSVC 中宏中多余的括号
- 如果我的班级是字面的班级,那么将我的类的对象声明为constexpr是多余的
- 组装的C 似乎包含多余的说明
- “并非所有控制路径都返回一个值./&quot“控制可能达到非空隙功能的末端”.验证时循环时
- 如何输出a'&quot在不使用线端的情况下进行文件
- Arm GNU编译器:通过多余的强制转换优化的三进制生成的程序集
- 包装二进制缓冲区 - 可能没有多余的移动/复制?
- 使用 linux epoll:epoll_ctl似乎有多余的参数?