Hi there,
I'm trying to convert a piece of code from templated archives to
polymorphic ones, and am running into trouble when serializing
std::string. Either I get an error message saying that std::string
has no serialize member function, or I get the attached message.
The relevant code is this:
---snip---
#include
#include
#include
void
mtime::serialize(boost::archive::polymorphic_iarchive& ar,
const unsigned int file_version)
{
std::string iso;
ar & boost::serialization::make_nvp("iso_time", iso);
set_from_iso_string(iso);
}
void
mtime::serialize(boost::archive::polymorphic_oarchive& ar,
const unsigned int file_version)
{
std::string iso =3D to_iso_string();
ar & boost::serialization::make_nvp("iso_time", iso);
}
---snip---
Am I missing something obvious? Are certain types not directly
supported for serialization via polymorphic archives? Any help would
be much appreciated.
--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
--=-=-=
g++ -g -Wall -I /afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1 -c -o mtime.o mtime.cpp
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/iserializer.hpp: In constructor `boost::archive::detail::iserializer::iserializer() [with Archive = boost::archive::polymorphic_iarchive, T = std::basic_string]':
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/iserializer.hpp:146: instantiated from `static boost::archive::detail::iserializer& boost::archive::detail::iserializer::instantiate() [with Archive = boost::archive::polymorphic_iarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/iserializer.hpp:375: instantiated from `static void boost::archive::detail::load_non_pointer_type::load_standard::invoke(Archive&, T&) [with Archive = boost::archive::polymorphic_iarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/iserializer.hpp:425: instantiated from `static void boost::archive::detail::load_non_pointer_type::invoke(Archive&, T&) [with Archive = boost::archive::polymorphic_iarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/iserializer.hpp:572: instantiated from `void boost::archive::load(Archive&, T&) [with Archive = boost::archive::polymorphic_iarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/polymorphic_iarchive.hpp:127: instantiated from `void boost::archive::polymorphic_iarchive::load_override(const boost::serialization::nvp<T>&, int) [with T = std::string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/interface_iarchive.hpp:76: instantiated from `Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = const boost::serialization::nvpstd::string, Archive = boost::archive::polymorphic_iarchive]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/interface_iarchive.hpp:83: instantiated from `Archive& boost::archive::detail::interface_iarchive<Archive>::operator&(T&) [with T = const boost::serialization::nvpstd::string, Archive = boost::archive::polymorphic_iarchive]'
mtime.cpp:36: instantiated from here
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/iserializer.hpp:115: error: incomplete type `boost::serialization::extended_type_info_null >' used in nested name specifier
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/oserializer.hpp: In constructor `boost::archive::detail::oserializer::oserializer() [with Archive = boost::archive::polymorphic_oarchive, T = std::basic_string]':
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/oserializer.hpp:135: instantiated from `static boost::archive::detail::oserializer& boost::archive::detail::oserializer::instantiate() [with Archive = boost::archive::polymorphic_oarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/oserializer.hpp:264: instantiated from `static void boost::archive::detail::save_non_pointer_type::save_standard::invoke(Archive&, const T&) [with Archive = boost::archive::polymorphic_oarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/oserializer.hpp:322: instantiated from `static void boost::archive::detail::save_non_pointer_type::invoke(Archive&, const T&) [with Archive = boost::archive::polymorphic_oarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/oserializer.hpp:536: instantiated from `void boost::archive::save(Archive&, const T&) [with Archive = boost::archive::polymorphic_oarchive, T = std::basic_string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/polymorphic_oarchive.hpp:128: instantiated from `void boost::archive::polymorphic_oarchive::save_override(const boost::serialization::nvp<T>&, int) [with T = std::string]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/interface_oarchive.hpp:78: instantiated from `Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(T&) [with T = const boost::serialization::nvpstd::string, Archive = boost::archive::polymorphic_oarchive]'
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/interface_oarchive.hpp:86: instantiated from `Archive& boost::archive::detail::interface_oarchive<Archive>::operator&(T&) [with T = const boost::serialization::nvpstd::string, Archive = boost::archive::polymorphic_oarchive]'
mtime.cpp:46: instantiated from here
/afs/informatik.uni-tuebingen.de/i386_fbsd54/boost-1.33.1/include/boost-1_33_1/boost/archive/detail/oserializer.hpp:108: error: incomplete type `boost::serialization::extended_type_info_null >' used in nested name specifier
make: *** [mtime.o] Error 1
Compilation exited abnormally with code 2 at Wed Feb 22 11:56:36
--=-=-=--