#include #include #include #include template std::pair replacing_insert(Index& i,const typename Index::value_type& x) { std::pair res=i.insert(x); if(!res.second)res.second=i.replace(res.first,x); return res; } struct foo { foo(int x,int y,int z):x(x),y(y),z(z){} int x,y,z; }; using namespace boost::multi_index; typedef multi_index_container< foo, indexed_by< ordered_unique >, ordered_unique > > > multi_index_t; int main() { multi_index_t m; m.insert(foo(1,0,10)); m.insert(foo(0,1,11)); std::pair p; p=m.insert(foo(1,0,20)); std::cout<z<z<z<