J'aimerais effectuer une itération sur un std::map à l'aide de BOOST_FOREACH et de modifier les valeurs. Je ne peux pas tout à fait le faire.
typedef std::pair<int, int> IdSizePair_t;
std::map<int,int> mmap;
mmap[1] = 1;
mmap[2] = 2;
mmap[3] = 3;
BOOST_FOREACH( IdSizePair_t i, mmap )
i.second++;
// mmap should contain {2,3,4} here
Bien sûr, cela ne changera rien parce que je ne suis pas de l'itération par référence. J'ai donc remplacer cette ligne à la place (comme par exemple dans le coup de pouce docs):
BOOST_FOREACH( IdSizePair_t &i, mmap )
et j'obtiens l'erreur de compilation:
error C2440: 'initializing' :
cannot convert from 'std::pair<_Ty1,_Ty2>' to 'IdSizePair_t &'
with
[
_Ty1=const int,
_Ty2=int
]
Toutes les suggestions?