|
Boost Users : |
Subject: [Boost-users] hash_map use with serialization in Visual Studio 2005
From: Mauricio Gomes (mg_at_[hidden])
Date: 2008-11-25 13:32:04
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
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net