В стандарте говорится под 5.17/9
braced-init-list может появиться на правой стороне
- присвоение на скаляр [...]
- присвоение определяется пользовательским оператором присваивания [..]
В то время как в 4.5.1-pre9999 GCC, я могу скомпилировать это (использующий-std=c ++ 0x, НЕ-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 корректен здесь?
Мне это кажется ошибкой. Инициализация ( int test = {1,2,3};
) в порядке, но, насколько я могу судить, ничто в стандарте не допускает присвоения.