[serialization] issues when writing non-intrusive code
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
Sean Farrow wrote:
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
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.
seems to me that all you should really need to do is to
#include
Hi Robert: I've included string now, and am using namespace std. I still get the same error, any other ideas. Cheers Sean. From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Robert Ramey Sent: 18 February 2012 20:15 To: boost-users@lists.boost.org Subject: Re: [Boost-users] [serialization] issues when writing non-intrusive code Sean Farrow wrote:
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
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. seems to me that all you should really need to do is to
#include
participants (2)
-
Robert Ramey
-
Sean Farrow