Hello all,
This is a corollary to my recent question on serialisation of shred_ptrs
and polymorphic classes - I noted it in that thread but it may be lost
in the debris.
In an effort to get them to work, I have put in a
BOOST_CLASS_EXPORT_GUID in my base and derived classes. However, this
brings up a compilation error...
whole load of template faults then... (see below for full error list)
../boost_1_33_1/boost/archive/basic_xml_archive.hpp:66: error :
incomplete type 'boost::STATIC_ASSERTION_FAILURE< false>' used in nested
name specifier
../boost_1_33_1/boost/archive/basic_xml_archive.hpp:66: error : size of
array has non-integral type '<type error>'
Now looking at the code where the final error occurs, it says this is
usually down to an unspecified NVP - i.e. a serialisation of a data item
not in an nvp statements. However, all the classes involved do have this
correctly set up. I have one question on it though..
Should I do this in my derived class to include the base class
serialisation
ar & base_object<A>(*this)
Or should I do this
ar & base_object<A>(make_nvp("base", *this) )
Both give the same compile error
Or is there simply a problem with BOOST_CLASS_EXPORT_GUID that means
that it is emitting something that needs nvp wrapping but this isn't
being done?
James
Complete compile error dump for masochists
iwmmxt_le-g++ -c -o TextPanel.o TextPanel.cpp -O0 -Iinclude
-I../Renderer/include -I../GI/include -I../boost_1_33_1
-I../common/include -fPIC
../boost_1_33_1/boost/archive/basic_xml_oarchive.hpp: In member function
`void boost::archive::basic_xml_oarchive<Archive>::save_override(T&,
int) [with T = const LCPanel, Archive = boost::archive::xml_oarchive]':
../boost_1_33_1/boost/archive/detail/interface_oarchive.hpp:78:
instantiated from `Archive&
boost::archive::detail::interface_oarchive<Archive>::operator<<(T&)
[with T = const LCPanel, Archive = boost::archive::xml_oarchive]'
../boost_1_33_1/boost/archive/detail/interface_oarchive.hpp:86:
instantiated from `Archive&
boost::archive::detail::interface_oarchive<Archive>::operator&(T&) [with
T = LCPanel, Archive = boost::archive::xml_oarchive]'
include/TextPanel.hpp:115: instantiated from `void
LCTextPanel::serialize(Archive&, unsigned int) [with Archive =
boost::archive::xml_oarchive]'
../boost_1_33_1/boost/serialization/access.hpp:109: instantiated from
`static void boost::serialization::access::serialize(Archive&, T&,
unsigned int) [with Archive = boost::archive::xml_oarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/serialization/serialization.hpp:81: instantiated
from `void boost::serialization::serialize(Archive&, T&, unsigned int)
[with Archive = boost::archive::xml_oarchive, T = LCTextPanel]'
../boost_1_33_1/boost/serialization/serialization.hpp:140:
instantiated from `void boost::serialization::serialize_adl(Archive&,
T&, unsigned int) [with Archive = boost::archive::xml_oarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/archive/detail/oserializer.hpp:233: instantiated
from `boost::archive::detail::pointer_oserializer::pointer_oserializer() [with T = LCTextPanel, Archive =
boost::archive::xml_oarchive]'
../boost_1_33_1/boost/archive/detail/oserializer.hpp:198: instantiated
from `const boost::archive::detail::pointer_oserializer
boost::archive::detail::pointer_oserializer::instance'
../boost_1_33_1/boost/archive/detail/oserializer.hpp:190: instantiated
from `static const boost::archive::detail::pointer_oserializer& boost::archive::detail::pointer_oserializer::instantiate() [with T = LCTextPanel, Archive =
boost::archive::xml_oarchive]'
../boost_1_33_1/boost/archive/detail/oserializer.hpp:515: instantiated
from `const boost::archive::detail::basic_pointer_oserializer&
boost::archive::detail::instantiate_pointer_oserializer(Archive*, T*)
[with Archive = boost::archive::xml_oarchive, T = LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:83: instantiated from
`static void boost::archive::detail::export_impl::archive::o::invoke() [with Archive = boost::archive::xml_oarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:105: instantiated from
`static void boost::archive::detail::export_impl::archive::instantiate() [with Archive = boost::archive::xml_oarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:116: instantiated from
`static void boost::archive::detail::export_impl::for_each_archive::instantiate() [with ASeq =
boost::mpl::list2, T = LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:132: instantiated from
`boost::archive::detail::export_generator::export_generator()
[with T = LCTextPanel, ASeq =
boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:139: instantiated from
`const boost::archive::detail::export_generator >
boost::archive::detail::export_generator >::instance'
../boost_1_33_1/boost/serialization/export.hpp:177: instantiated from
`static const boost::archive::detail::export_generator*
boost::archive::detail::export_instance::not_abstract::invoke()
[with T = LCTextPanel, ASeq =
boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:191: instantiated from
`std::pair*,
const boost::archive::detail::guid_initializer<T>*>
boost::archive::detail::export_instance_invoke() [with T = LCTextPanel,
ASeq = boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:211: instantiated from
`static std::pair*, const boost::archive::detail::guid_initializer<T>*>
boost::archive::detail::export_archives::non_empty_archive_list::invoke() [with T = LCTextPanel, ASeq =
boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:225: instantiated from
`std::pair*,
const boost::archive::detail::guid_initializer<T>*>
boost::archive::detail::export_archives_invoke(T&, ASeq&) [with T =
LCTextPanel, ASeq = boost::mpl::list2]'
include/TextPanel.hpp:124: instantiated from here
../boost_1_33_1/boost/archive/basic_xml_oarchive.hpp:86: error:
incomplete type `boost::STATIC_ASSERTION_FAILURE< false>' used in nested
name specifier
../boost_1_33_1/boost/archive/basic_xml_oarchive.hpp:86: error: size of
array has non-integral type `<type error>'
../boost_1_33_1/boost/archive/basic_xml_iarchive.hpp: In member function
`void boost::archive::basic_xml_iarchive<Archive>::load_override(T&,
int) [with T = LCPanel, Archive = boost::archive::xml_iarchive]':
../boost_1_33_1/boost/archive/xml_iarchive.hpp:74: instantiated from
`void boost::archive::xml_iarchive_impl<Archive>::load_override(T&, int)
[with T = LCPanel, Archive = boost::archive::xml_iarchive]'
../boost_1_33_1/boost/archive/detail/interface_iarchive.hpp:76:
instantiated from `Archive&
boost::archive::detail::interface_iarchive<Archive>::operator>>(T&)
[with T = LCPanel, Archive = boost::archive::xml_iarchive]'
../boost_1_33_1/boost/archive/detail/interface_iarchive.hpp:83:
instantiated from `Archive&
boost::archive::detail::interface_iarchive<Archive>::operator&(T&) [with
T = LCPanel, Archive = boost::archive::xml_iarchive]'
include/TextPanel.hpp:115: instantiated from `void
LCTextPanel::serialize(Archive&, unsigned int) [with Archive =
boost::archive::xml_iarchive]'
../boost_1_33_1/boost/serialization/access.hpp:109: instantiated from
`static void boost::serialization::access::serialize(Archive&, T&,
unsigned int) [with Archive = boost::archive::xml_iarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/serialization/serialization.hpp:81: instantiated
from `void boost::serialization::serialize(Archive&, T&, unsigned int)
[with Archive = boost::archive::xml_iarchive, T = LCTextPanel]'
../boost_1_33_1/boost/serialization/serialization.hpp:140:
instantiated from `void boost::serialization::serialize_adl(Archive&,
T&, unsigned int) [with Archive = boost::archive::xml_iarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/archive/detail/iserializer.hpp:339: instantiated
from `boost::archive::detail::pointer_iserializer::pointer_iserializer() [with T = LCTextPanel, Archive =
boost::archive::xml_iarchive]'
../boost_1_33_1/boost/archive/detail/iserializer.hpp:211: instantiated
from `const boost::archive::detail::pointer_iserializer
boost::archive::detail::pointer_iserializer::instance'
../boost_1_33_1/boost/archive/detail/iserializer.hpp:203: instantiated
from `static const boost::archive::detail::pointer_iserializer& boost::archive::detail::pointer_iserializer::instantiate() [with T = LCTextPanel, Archive =
boost::archive::xml_iarchive]'
../boost_1_33_1/boost/archive/detail/iserializer.hpp:546: instantiated
from `const boost::archive::detail::basic_pointer_iserializer&
boost::archive::detail::instantiate_pointer_iserializer(Archive*, T*)
[with Archive = boost::archive::xml_iarchive, T = LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:75: instantiated from
`static void boost::archive::detail::export_impl::archive::i::invoke() [with Archive = boost::archive::xml_iarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:105: instantiated from
`static void boost::archive::detail::export_impl::archive::instantiate() [with Archive = boost::archive::xml_iarchive, T =
LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:116: instantiated from
`static void boost::archive::detail::export_impl::for_each_archive::instantiate() [with ASeq =
boost::mpl::list1, T = LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:122: instantiated from
`static void boost::archive::detail::export_impl::for_each_archive::instantiate() [with ASeq =
boost::mpl::list2, T = LCTextPanel]'
../boost_1_33_1/boost/serialization/export.hpp:132: instantiated from
`boost::archive::detail::export_generator::export_generator()
[with T = LCTextPanel, ASeq =
boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:139: instantiated from
`const boost::archive::detail::export_generator >
boost::archive::detail::export_generator >::instance'
../boost_1_33_1/boost/serialization/export.hpp:177: instantiated from
`static const boost::archive::detail::export_generator*
boost::archive::detail::export_instance::not_abstract::invoke()
[with T = LCTextPanel, ASeq =
boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:191: instantiated from
`std::pair*,
const boost::archive::detail::guid_initializer<T>*>
boost::archive::detail::export_instance_invoke() [with T = LCTextPanel,
ASeq = boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:211: instantiated from
`static std::pair*, const boost::archive::detail::guid_initializer<T>*>
boost::archive::detail::export_archives::non_empty_archive_list::invoke() [with T = LCTextPanel, ASeq =
boost::mpl::list2]'
../boost_1_33_1/boost/serialization/export.hpp:225: instantiated from
`std::pair*,
const boost::archive::detail::guid_initializer<T>*>
boost::archive::detail::export_archives_invoke(T&, ASeq&) [with T =
LCTextPanel, ASeq = boost::mpl::list2]'
include/TextPanel.hpp:124: instantiated from here
../boost_1_33_1/boost/archive/basic_xml_iarchive.hpp:66: error:
incomplete type `boost::STATIC_ASSERTION_FAILURE< false>' used in nested
name specifier
../boost_1_33_1/boost/archive/basic_xml_iarchive.hpp:66: error: size of
array has non-integral type `<type error>'
This message (including any attachments) contains confidential
and/or proprietary information intended only for the addressee.
Any unauthorized disclosure, copying, distribution or reliance on
the contents of this information is strictly prohibited and may
constitute a violation of law. If you are not the intended
recipient, please notify the sender immediately by responding to
this e-mail, and delete the message from your system. If you
have any questions about this e-mail please notify the sender
immediately.