Please help, or point me where should i read about it. What is this versioning and why my code was compiled with boost 1.39 will get compilation errors in 1.43?
Code:
#include <list>
#include
#include
#include
#include
#include
#include
#include
...
typedef boost::variant <__int32, unsigned __int32, std::string, std::wstring > param_t; // note: I've tried to use boost::int32_t and others, result is the same
typedef std::list< param_t > params_list_t;
...
class instruction
{
public:
...
private:
friend class boost::serialization::access; /**< Make accessible private members for boost serialization */
void save (boost::archive::xml_oarchive& ar, unsigned int version) const;
void load (boost::archive::xml_iarchive& ar, unsigned int version);
BOOST_SERIALIZATION_SPLIT_MEMBER()
private:
...
params_list_t m_params; /**< List of parameters */
};
BOOST_CLASS_IMPLEMENTATION(instruction, boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(instruction, boost::serialization::track_never)
BOOST_CLASS_IMPLEMENTATION(nvp<instruction>, boost::serialization::object_serializable)
BOOST_CLASS_TRACKING(nvp<instruction>, boost::serialization::track_never)
BOOST_CLASS_VERSION(instruction, 1);
BOOST_CLASS_IMPLEMENTATION(param_t, boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(param_t, boost::serialization::track_never)
BOOST_CLASS_IMPLEMENTATION(nvp, boost::serialization::object_serializable)
BOOST_CLASS_TRACKING(nvp, boost::serialization::track_never)
BOOST_CLASS_VERSION(param_t, 1)
BOOST_CLASS_VERSION(params_list_t, 1)
BOOST_CLASS_IMPLEMENTATION(nvp, boost::serialization::object_serializable)
BOOST_CLASS_TRACKING(nvp, boost::serialization::track_never)
BOOST_CLASS_IMPLEMENTATION(params_list_t, boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(params_list_t, boost::serialization::track_never)
BOOST_CLASS_IMPLEMENTATION(nvp, boost::serialization::object_serializable)
BOOST_CLASS_TRACKING(nvp, boost::serialization::track_never)
BOOST_CLASS_IMPLEMENTATION(instructions_list_t, boost::serialization::object_serializable)
BOOST_CLASS_TRACKING(instructions_list_t, boost::serialization::track_never)
CPP file:
void instruction::save (boost::archive::xml_oarchive& ar, unsigned int version) const
{
// ...
ar << BOOST_SERIALIZATION_NVP(m_params); // error is here, all other lines commented
// ...
}
Error (MS VS2008):
1>d:\Work\manager\third_party\boost\include\boost/archive/detail/check.hpp(78) : error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE<x>'
1> with
1> [
1> x=false
1> ]
1> d:\Work\manager\third_party\boost\include\boost/archive/detail/oserializer.hpp(307) : see reference to function template instantiation 'void boost::archive::detail::check_object_versioning<T>(void)' being compiled
1> with
1> [
1> T=const params_list_t
1> ]
1> d:\Work\manager\third_party\boost\include\boost/archive/detail/oserializer.hpp(525) : see reference to function template instantiation 'void boost::archive::detail::save_non_pointer_type<Archive>::invoke<const T>(Archive &,const T &)' being compiled
1> with
1> [
1> Archive=boost::archive::xml_oarchive,
1> T=const params_list_t
1> ]
1> d:\Work\manager\third_party\boost\include\boost/archive/detail/common_oarchive.hpp(69) : see reference to function template instantiation 'void boost::archive::save(Archive &,T &)' being compiled
1> with
1> [
1> Archive=boost::archive::xml_oarchive,
1> T=const params_list_t
1> ]
...
This is a first error message place:
template<class T>
inline void check_object_versioning(){
typedef
BOOST_DEDUCED_TYPENAME mpl::or_<
BOOST_DEDUCED_TYPENAME mpl::greater<
serialization::implementation_level<T>,
mpl::int_serialization::object_serializable
>,
BOOST_DEDUCED_TYPENAME mpl::equal_to<
serialization::version<T>,
mpl::int_<0>
>
> typex;
// trap attempts to serialize with objects that don't
// save class information in the archive with versioning.
BOOST_STATIC_ASSERT(typex::value);
}
I have understanding about what is BOOST_STATIC_ASSERT, but I haven't any ideas about what I'm doing wrong.
Changelog reading between 1.39 and 1.43 hasn't clarified anything.
-- реклама -----------------------------------------------------------
Три новые линейки хостинг-планов - всё что нужно Вашему сайту!
6 месяцев хостинга бесплатно и домен в подарок. http://Hvosting.ua