2010-06-07 4 views
9

Стандарт говорит, под 5,17/9Является ли присвоение массива с сохраненным исходным списком правильному массиву?

приготовился-INIT-список может отображаться на правой стороне
- присвоения скалярной [...]
- назначение определяется с помощью определенного пользователем оператора присваивания [..]

в то время как в GCC 4.5.1-pre9999, можно обобщить следующим образом (с помощью -std = C++ 0x, НЕ -std = ГНУ ++ 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

ответ

4

Это похоже на ошибку. Инициализация (int test = {1,2,3};) в порядке, но, насколько я вижу, ничто в стандарте не позволяет назначить.

+0

И если бы это было допустимо, логически так должно быть назначение массива. – 2010-06-07 16:28:01

+0

@Neil: действительно верно. –

+4

Вы были правы, очевидно, это была ошибка GCC, и она была исправлена ​​в GCC 4.6: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44045#c12 – Cubbi

 Смежные вопросы

  • Нет связанных вопросов^_^