Opened 17 years ago

Closed 17 years ago

#455 closed Bugs (Works For Me)

1.33 RC2: polymorphic stuff broken further??

Reported by: nobody Owned by: Robert Ramey
Milestone: Component: serialization
Version: None Severity:
Keywords: Cc:

Description

Hello again,

i just downloaded 1.33 RC2 and noticed polymorphic
serialization doesnt work for my projects anymore.
These errors are new and different from RC1 (which
didnt work too, but 1.32 works).
I cant get it compile anymore (static compile time
asserts and others)...

I even loaded up the provided sample boost ser.
projects and notice there are similar errors too
(from libs\serialization\vc7ide\*.sln)

---- demo_exception

demo_exception.cpp
e:\SDK\Boost\boost_1_33_0_RC2\libs\serialization\vc7ide\..\..\..\boost\archive\detail\oserializer.hpp(566)
: error C2027: use of undefined type
'boost::STATIC_ASSERTION_FAILURE<x>'
        with
        [
            x=false
        ]
       
e:\SDK\Boost\boost_1_33_0_RC2\libs\serialization\vc7ide\..\..\..\boost\archive\detail\oserializer.hpp(566)
: see reference to class template instantiation
'boost::STATIC_ASSERTION_FAILURE<x>' being compiled
        with
        [
            x=false
        ]
       
e:\SDK\Boost\boost_1_33_0_RC2\libs\serialization\vc7ide\..\..\..\boost\archive\basic_text_oarchive.hpp(78)
: see reference to function template instantiation
'void boost::archive::save<Archive,T>(Archive &,T & )'
being compiled
        with
        [
            Archive=boost::archive::text_oarchive,
            T=School *
        ]
       
e:\SDK\Boost\boost_1_33_0_RC2\libs\serialization\vc7ide\..\..\..\boost\archive\detail\interface_oarchive.hpp(85)
: see reference to function template instantiation
'void
boost::archive::basic_text_oarchive<Archive>::save_override<T>(T
& ,int)' being compiled
        with
        [
            Archive=boost::archive::text_oarchive,
            T=School *
        ]
       
\SDK\Boost\boost_1_33_0_RC2\libs\serialization\example\demo_exception.cpp(219)
: see reference to function template instantiation
'Archive
&boost::archive::detail::interface_oarchive<Archive>::operator
<<<School*>(T & )' being compiled
        with
        [
            Archive=boost::archive::text_oarchive,
            T=School *
        ]

(iserializer is same problem:)

Boost\boost_1_33_0_RC2\libs\serialization\vc7ide\..\..\..\boost\archive\detail\iserializer.hpp(544)
: error C2027: use of undefined type
'boost::STATIC_ASSERTION_FAILURE<x>'

(similar to error in my projects)

These errors go away if i make objects to be serialized
"const"
e.g. (for the sample) school* const .. ????

This "constness" constraint didnt show up in 1.32.

It is especially difficult to enforce it if you
serialize members with "ar & m1 & m2 .. " notation.

-----  demo_shared_ptr:

Boost\boost_1_33_0_RC2\libs\serialization\example\demo_shared_ptr.cpp(138)
: error C2039: 'sp_counted_base_impl' : is not a member
of 'boost::detail'
Boost\boost_1_33_0_RC2\libs\serialization\example\demo_shared_ptr.cpp(138)
: error C2061: syntax error : identifier
'sp_counted_base_impl'
....

There are some errors with invalid project references
and library names at all (linker errors, tries to link
with wrong libs).
It seems the project files are out of sync for long time.

----------------

Additionally:

boost\boost\archive\detail\interface_iarchive.hpp(73) :
error C2039: 'basic_iarchive' : is not a member of
'boost::archive::polymorphic_iarchive'
        
boost\boost\archive\polymorphic_iarchive.hpp(52) : see
declaration of 'boost::archive::polymorphic_iarchive'
        
boost\boost\archive\detail\interface_iarchive.hpp(72) :
while compiling class-template member function 'void
boost::archive::detail::interface_iarchive<Archive>::lookup_helper(const
boost::serialization::extended_type_info *const
,boost::shared_ptr<T> &)'
 
boost\boost\archive\detail\interface_iarchive.hpp(73) :
error C2662:
'boost::archive::detail::basic_iarchive::lookup_basic_helper'
: cannot convert 'this' pointer from
'boost::archive::polymorphic_iarchive' to
'boost::archive::detail::basic_iarchive &'
        Reason: cannot convert from
'boost::archive::polymorphic_iarchive' to
'boost::archive::detail::basic_iarchive'
        Conversion requires a second
user-defined-conversion operator or constructor

This is my include list (i use precompiled header):

...

#include "boost/archive/polymorphic_oarchive.hpp"
#include "boost/archive/polymorphic_iarchive.hpp"

#include "boost/serialization/shared_ptr.hpp"
#include "boost/serialization/serialization.hpp"
#include "boost/serialization/utility.hpp"
#include "boost/serialization/list.hpp"
#include "boost/serialization/version.hpp"
#include "boost/serialization/map.hpp"
#include "boost/serialization/vector.hpp"
#include "boost/serialization/string.hpp"
#include "boost/serialization/split_member.hpp"

(i had to move  "boost/serialization/shared_ptr.hpp"
backwards after "archive" headers in contrast to 1.32)

These 1.33 poly serialization bugs are big showstoppers
for us because we extensively use serialization.
If they remain, 1.33 will have to be skipped...

Regards,

A. Focht





Change History (1)

comment:1 by Robert Ramey, 17 years ago

Status: assignedclosed
Logged In: YES 
user_id=396141

fixed in 1.33.1
Note: See TracTickets for help on using tickets.