
brad higgins escribió:
Hi Joaquín, Thanks for the quick response. I have attached the files I edited.
Thank you very much for the help, Brad
Hi Brad, There were one more change to do in boost/multi_index/hashed_index.hpp, please find attached a .diff file. I also updated the invariant_() member function to check the new doubly linked internal structure. Moreover, your modified hashed_index retains forward iterators from the original, but I guess you can trivially implement them as bidirectional (clue: see how this is done at sequenced_index.hpp). Joaquín M López Muñoz Telefónica, Investigación y Desarrollo Index: hashed_index.hpp =================================================================== --- hashed_index.hpp (revision 52074) +++ hashed_index.hpp (working copy) @@ -679,10 +679,12 @@ map.find( static_cast<final_node_type*>( node_type::from_impl(next_org))))->impl(); + cpy->next()->prev()=cpy; next_org=next_org->next(); cpy=cpy->next(); } cpy->next()=begin_cpy; + begin_cpy->prev()=cpy; } super::copy_(x,map); @@ -938,7 +940,12 @@ } else{ size_type s0=0; - for(const_iterator it=begin(),it_end=end();it!=it_end;++it,++s0){} + for(const_iterator it=begin(),it_end=end();it!=it_end;++it,++s0){ + if(it.get_node()->impl()->next()->prev()!=it.get_node()->impl()) + return false; + if(it.get_node()->impl()->prev()->next()!=it.get_node()->impl()) + return false; + } if(s0!=size())return false; size_type s1=0;