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<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.
seems to me that all you should really need to do is to
#include <boost/serialization/string.hpp>
this includes serialization implemenations for std::wstring and std::string.
The typedefs you've included above only create some aliases with
weird upper/lower case names. This shouldn't affect anything.
Robert Ramey