你能用字符串文字初始化一个“cv char[]”吗?

Can you initialize a "cv char[]" with a string literal?

提问人:Jan Schultke 提问时间:8/21/2023 最后编辑:Jan Schultke 更新时间:8/21/2023 访问量:159

问:

[dcl.init.string] p1 中的当前措辞如下:

普通字符类型的数组 [...] 可以由普通字符串文本 [...] 初始化,也可以由括在大括号中的适当类型的字符串文本初始化。

普通字符类型包括 、 和 (参见 [basic.fundamental])。它不包括这些类型的 cv 限定版本。charsigned charunsigned char

由此,尚不清楚 or 的数组是否也可以使用字符串文字进行初始化,而不仅仅是 .措辞不清楚,因为它没有说:const charvolatile charchar

cv 普通字符类型的数组,[...]

这在以下情况下很重要:

const char str[] = "test"; // is this valid?

我有 99% 的把握,其意图是你应该能够做到这一点。但是,是否有一段明确允许您这样做,或者这是措辞缺陷?

C++ 数组 初始化 语言-律师

评论

1赞 Eljay 8/21/2023
这是一个普通字符类型的数组。我错过了什么?char const[]
6赞 Yksisarvinen 8/21/2023
@Eljay 我想这个问题问的是 cv 限定的普通字符类型是否仍然是普通字符类型。我希望措辞像“一个数组(可能是 cv 限定的)普通字符类型 [...]”
1赞 YSC 8/21/2023
附录:字符串文字已经是常量限定的。没有说任何关于挥发性资格oc的事情。查看 eel.is/c++draft/lex.string#1
1赞 Language Lawyer 8/21/2023
@Eljay 我错过了什么?普通字符类型的定义
2赞 Language Lawyer 8/21/2023
与CWG251、CWG2185、CWG2448相关

答: 暂无答案