2010-06-07 38 views
9

的标准说,下5.17/9将braced-init-list赋值给数组是否正确?

甲支撑-INIT-列表可以对
右手侧出现 - 分配到一个标量[...]
- 分配定义由用户定义的赋值运算符[..]

虽然GCC 4.5.1-pre9999,我可以编译这个(使用-std =的C++ 0x,NOT -std = GNU ++ 0X)

#include <iostream> 

int main() 
{ 
     int test[] = {1,2,3}; 
     std::cout << test[0] << test[1] << test[2]; 
     test = {4,5,6}; 
     std::cout << test[0] << test[1] << test[2] << std::endl; 
} 

,它打印123456。 GCC在这里正确吗?

+5

投票关闭,因为这太局部化了,这是现在过时的编译器版本中的一个错误。 – Cubbi 2013-12-04 00:55:49

回答

4

它看起来像一个bug。初始化(int test = {1,2,3};)很好,但据我所知,标准中没有任何内容允许分配。

+0

如果允许,逻辑上应该是数组赋值。 – 2010-06-07 16:28:01

+0

@尼尔:的确如此。 – 2010-06-07 16:44:05

+4

你说得对,显然这是一个GCC bug,它已经在GCC 4.6中修复了:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44045#c12 – Cubbi 2010-06-07 17:11:56