使用 new[] 关键字时不允许不完整的类型

luk*_*r3k 7 c++

此代码给出错误

不允许不完整的类型

初始值设定项过多

string *ReturnTwoStringsInArray()
{
   return new string[]{"return1", "return2"};
}
Run Code Online (Sandbox Code Playgroud)

这个有效:

string *ReturnTwoStringsInArray()
{
   return new string[2]{"return1", "return2"};
}
Run Code Online (Sandbox Code Playgroud)

这个也是如此:

string arr[]{"return1","return"};
Run Code Online (Sandbox Code Playgroud)

如果编译器可以从初始值设定项列表中确定所需的大小,我们不应该能够new不带参数地调用[]吗?

Ted*_*gmo 9

C++ 编译器支持中,我们可以看到缺陷报告P1009R2new-expressions 中的 Array size deduction尚未被所有编译器供应商采用。

P1009R2说:“措辞更改的效果应该适用于它们适用的所有先前版本的 C++ 的实现。

clang++ 从 C++11 模式及更高版本的版本 9 开始支持它。