Yes, but DataMap seems to *replicate* the keys that are alreadypresent in A. Cannot you just have the following?typedef multi_index_container<
A*,
indexed_by<
ordered_unique<
tag <Key1>, BOOST_MULTI_INDEX_MEMBER(A,std::string,Key1)>,
ordered_non_unique<
tag<Key2>,BOOST_MULTI_INDEX_MEMBER(A,long,Key2)>,
ordered_unique<
tag<Key3>,BOOST_MULTI_INDEX_MEMBER(A,long,Key3)>
>
> tDMap;
[...]>