|
Boost Users : |
From: Yan Drugalya (ydrugalya_at_[hidden])
Date: 2007-12-24 08:01:48
Folks ,
I feel a lack of understanding what actually track_always trait does. I
expect that boost does not allow me to save/load twice object with the same
address?
But it reports BOOST_STATIC_ASSERT even in following case:
Question 1
Class A
{
// serialization support
};
BOOST_CLASS_TRACKING (A, track_always)
BOOST_CLASS_EXPORT( A)
A* a = new A;
oa << a ;
assert in oserializer.hpp
// if your program traps here, it indicates taht your doing one of the
following:
// a) serializing an object of a type marked "track_never" through a
pointer.
// b) saving an non-const object of a type not markd "track_never)
// Either of these conditions may be an indicator of an error usage of the
// serialization library and should be double checked. See
documentation on
// object tracking.
Qurstion 2
Above code with using of xml_oarchive compliles and works:
oa << BOOST_SERIALIZATION_NVP(a);
oa << BOOST_SERIALIZATION_NVP(a);
I expect that it should raise above BOOST_STATIC_ASSERT because I trying to
store the same object twice?
Question 3
Also I can't understand how track_always serialization trait works in case
of Diamond inheritance
Quataion from documentation
"In a diamond hesitance structure with a virtual base class, object tracking
will prevent redundant save/load invocations"
How boost knows that this is virtual base class and prevents redundant
save/load invocations?
Please help me to find the way to understanding of object tracking trait :)
Thank you
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