
Dear all, I am learning to use the serialization library and I am having some difficulties in using hash_map. In the code below if I change to std::map it works fine. #include <cstddef> // NULL #include <iomanip> #include <iostream> #include <fstream> #include <string> #include <hash_map> #include <boost/archive/tmpdir.hpp> #include <boost/archive/text_iarchive.hpp> #include <boost/archive/text_oarchive.hpp> #include <boost/serialization/base_object.hpp> #include <boost/serialization/utility.hpp> #include <boost/serialization/list.hpp> #include <boost/serialization/hash_map.hpp> #include <boost/serialization/map.hpp> #include <boost/serialization/assume_abstract.hpp> template <typename StringType, typename SettingKeyType, typenameSettingValueType> void save_setting (StringType application_name, SettingKeyType key, SettingValueType value) { typedef stdext::hash_map<SettingKeyType, SettingValueType> Config; static stdext::hash_map<StringType, Config> app_configs; // key = application_name, value = settings map. Config cfg = app_configs[application_name]; cfg[key] = value; StringType file_name = application_name + ".cfg"; // Compose configuration file name. std::ofstream ofs (file_name.c_str ()); boost::archive::text_oarchive oa (ofs); oa << cfg; } int main(int argc, char *argv[]) { save_setting<std::string, int, std::string> ("test_app", 1, "value1"); } However if I try to use stdext::hash_map then it fails to compile with the following error: 1>c:\boost_1_37_0\boost\serialization\access.hpp(109) : error C2039: 'serialize' : is not a member of 'stdext::hash_map<_Kty,_Ty>' 1> with 1> [ 1> _Kty=int, 1> _Ty=std::string 1> ] It is most likely related to the fact that hash_map is not in the std namespace. I have searched the boost-users list and I have found this: http://lists.boost.org/boost-users/2005/08/13183.php but it refers to a GNU/Linux environment. Has this been addressed in 1.37 (that's the version I am using) ? Any suggestions ? Thank you in advance for your help. -- Mauricio Gomes