|
Boost Users : |
Subject: [Boost-users] [serialization] broken in 1.36
From: gast128 (gast128_at_[hidden])
Date: 2008-09-12 07:02:26
Dear all,
yesterday we upgraded to vstudio 2008 and Boost 1.36. However it seems that
the serialization library gives a STATIC_WARNING now. the code uses a
shared_ptr of a data structure which has no virtual function. This was ok in
Boost 1.34 and I don't see why this should be wrong:
#include "stdafx.h"
#include <sstream>
#include <boost\shared_ptr.hpp>
#include <boost\serialization\shared_ptr.hpp>
#include <boost\serialization\nvp.hpp>
#include <boost\archive\xml_iarchive.hpp>
struct Data
{
std::string m_str;
};
template <class Archive>
void serialize(Archive& ar, Data& r, const unsigned int /*version*/)
{
ar & BOOST_SERIALIZATION_NVP(r.m_str);
}
struct DataStorage
{
template <class Archive>
void serialize(Archive& ar, const unsigned int /*version*/)
{
ar & BOOST_SERIALIZATION_NVP(m_ptrBla);
}
private: //data
typedef boost::shared_ptr<Data> DataPtr;
DataPtr m_ptrBla;
};
int _tmain()
{
DataStorage data;
std::stringstream sstr;
//boost::archive::xml_oarchive oa(sstr);
//oa << boost::serialization::make_nvp("bla", data);
boost::archive::xml_iarchive ia(sstr);
ia >> boost::serialization::make_nvp("bla", data);
return 0;
}
It gives warning c4099 where '<---':
const extended_type_info *
get_derived_extended_type_info(const T & t) const {
// note: this implementation - based on usage of typeid (rtti)
// only does something if the class has at least one virtual function.
BOOST_STATIC_WARNING(boost::is_polymorphic<T>::value); //<---
return
detail::extended_type_info_typeid_0::get_extended_type_info(
typeid(t)
);
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net