
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.