Subject: Re: [Boost-bugs] [Boost C++ Libraries] #5340: Patch to support concrete base classes becomming abstract classes
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-08-13 07:32:00
#5340: Patch to support concrete base classes becomming abstract classes
-------------------------------------+-------------------------------------
Reporter: Aaron Barany | Owner: ramey
<akb825@â¦> | Status: new
Type: Patches | Component: serialization
Milestone: To Be Determined | Severity: Showstopper
Version: Boost 1.47.0 | Keywords: serialization abstract
Resolution: | concrete
-------------------------------------+-------------------------------------
Comment (by anonymous):
The patch breaks the compatibility with older implementations. The
following snipped shows this and it works before applying the patch, now
the code issue a compiler error on gcc 4.6.3. See attachment
compileErrorSerialiazationPatch.cpp
Compiler error
{{{
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP
-MF"testMemberFuncCheck.d" -MT"testMemberFuncCheck.d" -o
"testMemberFuncCheck.o" "../testMemberFuncCheck.cpp"
../testMemberFuncCheck.cpp:149:1: error: template-id
âserialize<boostIArchive>â for âvoid
AccessTestDerB::serialize(boostIArchive&, unsigned int)â does not match
any template declaration
../testMemberFuncCheck.cpp:149:1: error: template-id
âserialize<boostOArchive>â for âvoid
AccessTestDerB::serialize(boostOArchive&, unsigned int)â does not match
any template declaration
In file included from
/usr/include/boost/serialization/split_member.hpp:23:0,
from /usr/include/boost/serialization/nvp.hpp:33,
from /usr/include/boost/serialization/array.hpp:19,
from
/usr/include/boost/archive/basic_binary_oprimitive.hpp:50,
from
/usr/include/boost/archive/binary_oarchive_impl.hpp:22,
from /usr/include/boost/archive/binary_oarchive.hpp:21,
from ../testMemberFuncCheck.cpp:106:
/usr/include/boost/serialization/access.hpp: In instantiation of âconst
bool
boost::serialization::access::has_serialize_func<boost::archive::binary_iarchive,
AccessTestDerB>::valueâ:
/usr/include/boost/serialization/access.hpp:306:21: instantiated from
âstatic void boost::serialization::access::serialize(Archive&, T&,
unsigned int) [with Archive = boost::archive::binary_iarchive, T =
AccessTestDerB]â
/usr/include/boost/serialization/serialization.hpp:69:5: instantiated
from âvoid boost::serialization::serialize(Archive&, T&, unsigned int)
[with Archive = boost::archive::binary_iarchive, T = AccessTestDerB]â
/usr/include/boost/serialization/serialization.hpp:128:9: instantiated
from âvoid boost::serialization::serialize_adl(Archive&, T&, unsigned int)
[with Archive = boost::archive::binary_iarchive, T = AccessTestDerB]â
/usr/include/boost/archive/detail/iserializer.hpp:192:5: instantiated
from âvoid boost::archive::detail::iserializer<Archive,
T>::load_object_data(boost::archive::detail::basic_iarchive&, void*,
unsigned int) const [with Archive = boost::archive::binary_iarchive, T =
AccessTestDerB]â
../testMemberFuncCheck.cpp:157:1: instantiated from here
/usr/include/boost/serialization/access.hpp:78:9: error:
â&AccessTestBase::serializeâ is not a valid template argument for type
âvoid (AccessTestDerB::*)(boost::archive::binary_iarchive&, unsigned int)â
because it is of type âvoid
(AccessTestBase::*)(boost::archive::binary_iarchive&, unsigned int)â
/usr/include/boost/serialization/access.hpp:78:9: note: standard
conversions are not allowed in this context
/usr/include/boost/serialization/access.hpp: In instantiation of âconst
bool
boost::serialization::access::has_serialize_func<boost::archive::binary_oarchive,
AccessTestDerB>::valueâ:
/usr/include/boost/serialization/access.hpp:306:21: instantiated from
âstatic void boost::serialization::access::serialize(Archive&, T&,
unsigned int) [with Archive = boost::archive::binary_oarchive, T =
AccessTestDerB]â
/usr/include/boost/serialization/serialization.hpp:69:5: instantiated
from âvoid boost::serialization::serialize(Archive&, T&, unsigned int)
[with Archive = boost::archive::binary_oarchive, T = AccessTestDerB]â
/usr/include/boost/serialization/serialization.hpp:128:9: instantiated
from âvoid boost::serialization::serialize_adl(Archive&, T&, unsigned int)
[with Archive = boost::archive::binary_oarchive, T = AccessTestDerB]â
/usr/include/boost/archive/detail/oserializer.hpp:152:5: instantiated
from âvoid boost::archive::detail::oserializer<Archive,
T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*)
const [with Archive = boost::archive::binary_oarchive, T =
AccessTestDerB]â
../testMemberFuncCheck.cpp:157:1: instantiated from here
/usr/include/boost/serialization/access.hpp:78:9: error:
â&AccessTestBase::serializeâ is not a valid template argument for type
âvoid (AccessTestDerB::*)(boost::archive::binary_oarchive&, unsigned int)â
because it is of type âvoid
(AccessTestBase::*)(boost::archive::binary_oarchive&, unsigned int)â
/usr/include/boost/serialization/access.hpp:78:9: note: standard
conversions are not allowed in this context
}}}
PS: Maybe someone can say how to log in here or how to recover my old
account. Pressing Login will only give a shitty login prompt without
anything else.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/5340#comment:7> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:16 UTC