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