Hello JoaquĆn, now I found the failure, to the problem described in message http://lists.boost.org/boost-users/2007/04/27211.php with std::string as a key not being found. The problem in my case was that I use Xalan to parse XML and have to convert string to single byte characters. Since std::string has some build in caching to improve performance and I decode double byte string (XalanDOMString) as follows: std::string get_string(XalanDOMString const& str) { XalanDOMString::CharVectorType v; str.transcode(v); return std::string(v.begin(), v.end()); } this code produces a string which still points to the double byte buffer and therefore this results in a different hash value for the returned string as the value would be for the basic_string<char> or C-String: An example: XalanDOMString str("Sint8"); std::string char_str(get_string(str)); Calling find in the multi-index results in a hash value 40. Calling find in the multi-index for const char* str="Sint8"; results in a hash value 13 The same result (13) can be achieved when calling on char_str.c_str(); c_str() cause the strings internal buffer to be rebuild. Since boost::hash is on the way to become a part of STL it should ensure to work with the correctly intended copy of string. What is your opinion on this issue? With Kind Regards, Ovanes