【发布时间】:2016-02-23 03:15:21
【问题描述】:
编译下面的例子
struct S {};
int main() {
S array[1] = { S() };
}
bcc32 出现以下错误:
[bcc32 Error] test.cpp(4): E2225 Too many initializers
这是 bcc32 中的一个错误,还是我遗漏了什么,上面的示例不是有效的 C++?
Clang 和 GCC 编译这个例子都没有问题。
【问题讨论】:
-
对我来说似乎完全有效的聚合初始化。我不确定这是否是这里的问题,但我认为在 c++03 之前在那里使用
S()在技术上是不正确的。 bcc32是否支持c++03? -
他们声称支持某些 C++11 功能,例如右值引用,但我找不到有关 C++98/03 支持完整性的信息。
-
从 c++03 中获得技术上正确的特性是 value-initialization。如果编译器不支持它,如果它也支持 C++11,我会感到非常惊讶。此外,我不确定这如何应用于空对象,因为技术性与复制对象有关,但没有什么可复制的。
-
@vitaut 看看我的回答如何解决这个问题...
标签: c++ compiler-errors borland-c++