#include #include #include #include #include #include namespace bm = ::boost::multi_index; // http://lists.boost.org/boost-users/2005/12/16088.php template struct tuple_member_extractor { typedef typename boost::tuples::element::type result_type; const result_type& operator()(const Tuple& t) const { return boost::tuples::get(t); } }; template class mutable_tuple_element { public: mutable_tuple_element(const T& t):t(t){} operator T&()const{return t;} private: mutable T t; }; namespace boost{ namespace tuples{ template class access_traits > { typedef T& non_const_type; typedef T& const_type; typedef const T& parameter_type; }; } // namespace tuples } // namespace boost typedef boost::tuple > element; typedef bm::multi_index_container< element, bm::indexed_by > > > multi_t; int main() { multi_t test; test.insert(boost::make_tuple("a", "aa")); const element & ref = *test.find("a"); std::string & s = ref.get<1>(); }