Boost logo

Boost Users :

Subject: [Boost-users] [Serialization] #include order
From: dariomt_at_[hidden]
Date: 2010-07-28 05:10:58


Hi all,

Compiling the following program with Boost 1.42 fires an static assertion in
boost/serialization/shared_ptr.hpp:153. This is expected.

But if I change the order of includes (compile with -DCHANGE) the assertion
fires in boost/serialization/shared_ptr.hpp:121. The assertion is expected
but I found it strange that I end up compiling a different part of the same
file...

The code in that section seems related to serialization of shared_ptr in
version 1_32, but since I'm not able to understand the difference, I'm just
reporting it in case the order of #includes might affect how shared_ptr's
get serialized.

Regards

---code---
#include <boost/shared_ptr.hpp>

#ifndef CHANGE
#include <boost/serialization/shared_ptr.hpp>
#endif

#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>

#ifdef CHANGE
#include <boost/serialization/shared_ptr.hpp>
#endif

void test()
{
    boost::shared_ptr<int> p (new int); *p = 12345;

    boost::archive::xml_iarchive ia(std::cin);
    boost::serialization::load(ia, p, 0);
}



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