[boost-serialisierung] archive: "load" oder "save"
-
nächstes problem:
#include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> class A{ public: template<class Archive> void serialize(Archive & ar, const unsigned int version) { if(Archive::is_loading()) {...} else {...} } };boost ver. 1.33.1
windows(cl): fehlerfrei
linux(gcc 3.4): geschätze 10 seiten lange fehlermeldung.
hier die wesentlichen punkte, mit denen ich nichts anfangen kann:
"... error: dependent-nameArchive::is_loading' is parsed as a non-type, but instantiation yields a type..." und "... note: saytypename Archive::is_loading' if a type is meant..."Hilfreiche Zusatz-Infos:
archive-interface-definfition von boost (hier für iarchive):typedef mpl::bool_<true> is_loading; typedef mpl::bool_<false> is_saving;quelle:
http://www.boost.org/libs/serialization/doc/archives.html#archive_modelsmit
template< bool C_ > struct bool_ { BOOST_STATIC_CONSTANT(bool, value = C_); typedef integral_c_tag tag; typedef bool_ type; typedef bool value_type; operator bool() const { return this->value; } };was mache ich falsch?
-
Vermutlich gibt es da ein Problem, den op() aufzulösen (ich bin nichtmal sicher, wer da Recht hat). Versuch's mal mit
if(Archive::is_loading::value)...(oder im größten Notfall:typename Arcive::is_loading load; if(load())...
-
jupp, daran lag es...
wieso boost das ganze derartig wrapped ist mir eh ein rätsel.
andere archive die ich verwende (z.B. sie serialisierung von jarl lindrud) haben stinknormale statische methoden isRead() u. ä.jedenfalls klappt das ganze jetzt mit
Archive::is_loading::value1000 dank. 1A Forum!