Hi all,

I'm pretty new in boost and I am experimenting an issue I can't understand.
It looks like the usage of "replace()" modifies the iterator I am iterating on:

Here is a simple example:

it iterates properly if I do:

    Iterator it2, it3;
    boost::tuples::tie(it2, it3) = m_Container.get< CollectionID >().equal_range( 30 );

    while( it2!= it3 )
      {
      int time = it2->TCoord;
      if( time < 500 ) // we want to change the collection ID in this case
        {
        Structure tempStructure(*it2);
        tempStructure.CollectionID = 40;
        //m_Container.get< CollectionID >().replace(it2, tempStructure); comment this line
        }
      ++it2;
      }


whereas if I call "replace()" the iterator value changes to "it3" then it exists the loop:

    Iterator it2, it3;
    boost::tuples::tie(it2, it3) = m_Container.get< CollectionID >().equal_range( 30 );

    while( it2!= it3 )
      {
      int time = it2->TCoord;
      if( time < 500 ) // we want to change the collection ID in this case
        {
        Structure tempStructure(*it2);
        tempStructure.CollectionID = 40;
        m_Container.get< CollectionID >().replace(it2, tempStructure);
        }
      ++it2;
      }
 
the replace() method returns true.

I must be missing something but after reading the documentation and some researches on the web I couldn't find the answer.

Any help/explanation would be greatly appreciated,
Thanks,

Nicolas