Hi:
I am writing some non-intrusive serialization code for other c++ classes.
I am trying to serialize the wxString class from the wxWidgets library.
I have the following code:
namespace boost {
namespace serialization {
template<class Archive>
void serialize(Archive & ar, wxString & str, const unsigned int version)
{
ar & str.ToStdWstring();
}
}
}
I noticed the following two typedefs in the wxWidgets code:
typedef std::wstring wxStdWideString;
typedef std::basic_string<wchar_t> wxStdWideString;
only one of these is executed.
I then wrote a second unintrusive serialization class:
namespace boost {
namespace serialization {
template<class Archive>
void serialize(Archive & ar, wxString & str, const unsigned int version)
{
ar & str;
}
}
}
I am getting the following error, using visual c++ 2010:
1>c:\program files (x86)\boost\boost\archive\basic_xml_oarchive.hpp(92): error C2664: 'boost::mpl::assertion_failed' : cannot convert parameter 1 from 'boost::mpl::failed ************boost::serialization::is_wrapper<T>::* ***********' to 'boost::mpl::assert<false>::type'
with
[
T=const wxStdWideString
]
Given that I have written code to serialize the wxStdWideString typedef, does anyone know what is happening? Are typedefs ignored with boost serialization. Currently using 1.47.
Cheers
Sean.