constexpr const vs constexpr变量?

托马斯·莫拉德(Thomas Moulard):

似乎constexpr隐含了const,因此很常见:

constexpr int foo = 42; // no const here

但是,如果您写:

constexpr char *const str = "foo";

如果传递了-Wwrite-string标志,则GCC将生成“警告:从字符串常量到'char *'的弃用转换”。

写作:

constexpr const char *const str = "foo";

解决了这个问题。

那么constexpr const和constexpr真的一样吗?

TC:

问题在于,在变量声明中,constexpr始终将const-ness 应用于声明的对象;const另一方面,可以根据位置将其应用于其他类型。

从而

constexpr const int i = 3;
constexpr int i = 3;

等价

constexpr char* p = nullptr;
constexpr char* const p = nullptr;

等价 既能使p一个const指针char

constexpr const char* p = nullptr;
constexpr const char* const p = nullptr;

是等效的。constexprp一个const指针。constconst char *品牌p指向const char

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章