2010-06-07 13 views
9

Lo standard dice, sotto 5,17/9L'assegnazione di bretelle-init-list a un array è corretta?

A rinforzato-init-list possono essere visualizzati sul lato destro della
- l'incarico di uno scalare [...]
- un incarico definito da un operatore di assegnazione definita dall'utente [..]

Mentre nel GCC 4.5.1-pre9999, posso compilare questo (usando -std = C++ 0x, NON -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; 
} 

e stampa 123456. GCC è corretto qui?

+5

Votare per chiudere perché questo è troppo localizzato, è un bug nella versione del compilatore ormai obsoleto. – Cubbi

risposta

4

Sembra un bug per me. L'inizializzazione (int test = {1,2,3};) va bene, ma per quanto posso vedere, nulla nello standard consente l'assegnazione.

+0

E se fosse permesso, logicamente così dovrebbe essere l'assegnazione dell'array. –

+0

@Neil: davvero vero. –

+4

Avevi ragione, apparentemente si trattava di un bug GCC ed è stato corretto in GCC 4.6: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44045#c12 – Cubbi

Problemi correlati