Se io inizializzare uno std :: array come segue, il compilatore mi dà un avvertimento circa le parentesi mancantiC++ 11: corretta l'inizializzazione di std :: array?
std::array<int, 4> a = {1, 2, 3, 4};
questo risolve il problema:
std::array<int, 4> a = {{1, 2, 3, 4}};
Questo è il messaggio di avviso:
missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka int [4]}' [-Wmissing-braces]
Questo è solo un bug nella mia versione di gcc o è stato fatto intenzionalmente? Se è così, perché?
'std :: array' è un aggregato. Penso che potrebbero farlo funzionare con un set in futuro, comunque. – chris
@chris Che cosa intendi esattamente? – CaffeineAddict
Bene, sai come si può avere 'struct S {int i; int j;}; 'e inizializza usando' S s = {5, 6}; '? Questa è l'inizializzazione aggregata. 'std :: array' contiene un array incorporato, che può essere inizializzato tramite un elenco di inizializzazione, che è ciò che è l'insieme interno. L'insieme esterno è per l'inizializzazione aggregata. – chris