string array [] =""; 意思是,它为什么有效?

Me *_*d I 4 c++ arrays

string array[] = "";
Run Code Online (Sandbox Code Playgroud)

我怎么能分配一个const char*数组?这是一样的:

string array[] = {""};
Run Code Online (Sandbox Code Playgroud)

?? 这对我来说很有意义.但是,这仍然不起作用

int array[] = 5;
Run Code Online (Sandbox Code Playgroud)

那么它们之间的区别在于它对int数组不起作用?

eca*_*mur 5

这是错误的代码; 你的编译器(可能是gcc/g ++?)中的一个错误就是接受它.

clang给出以下错误(链接):

a.cpp:5:17: error: array initializer must be an initializer list
    std::string array[] = "";
                ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

Visual C++同意(链接):

testvc.cpp(2) : error C3074: an array can only be initialized with an initializer-list
Run Code Online (Sandbox Code Playgroud)

标准中的相关条款是8.5p17:

[...]
- 如果目标类型是字符数组,char16_t数组,char32_t数组或wchar_t数组,初始值设定项是字符串文字,请参见8.5.2.
[...]
- 否则,如果目标类型是数组,则程序格式错误.
[...]

提交给gcc作为错误:http://gcc.gnu.org/bugzilla/show_bug.cgi? id = 60009