Ho cercato di inizializzare una mappa di <ints, vector<ints> >
utilizzando il nuovo standard 0X, ma non riesco a ottenere la sintassi corretta. Mi piacerebbe fare una mappa con una singola voce con chiave: value = 1: 3,4 <>Utilizzo di una lista initializer su una mappa di vettori
#include <initializer_list>
#include <map>
#include <vector>
using namespace std;
map<int, vector<int> > A = {1,{3,4}};
....
Muore con il seguente errore con gcc 4.4.3:
error: no matching function for call to std::map<int,std::vector<int,std::allocator<int> >,std::less<int>,std::allocator<std::pair<const int,std::vector<int,std::allocator<int> > > > >::map(<brace-enclosed initializer list>)
Modifica
Seguendo il suggerimento di cremagliera e aggiungendo la parentesi in più ora compila con un avvertimento che può essere deciso di eliminare utilizzando il flag -fno-dedurre-init-list. C'è qualche pericolo nel farlo?
non ti manca un tutore? – YGL
@ YGL - risolto grazie. Comunque non risolve il problema originale. – Hooked
In 4.4.1 il compilatore subisce un esaurimento nervoso (errore interno). Forse con 4.5 funziona correttamente? – ergosys