
Hi all, When trying to serialize a class with a virtual base class, I'm getting compilation errors. It seems to be part of a bug in type_traits, but I'm wondering if anyone knows a workaround for making it work anyhow. ultimately, the error boils down to "error: virtual function 'A::foo' has more than one final overrider in 'boost_type_traits_internal_struct_X'", using the code listing below.. It's simplified as much as possible, but obviously I need virtual inheritance due to using diamond inheritance. #include <boost/archive/text_oarchive.hpp> #include <boost/serialization/base_object.hpp> #include <boost/serialization/export.hpp> #include <boost/serialization/serialization.hpp> struct A { virtual ~A(){}; virtual void foo() = 0; template <class Archive> void serialize(Archive& ar, const unsigned int version) { } }; struct B : public virtual A { virtual void foo() { } template <class Archive> void serialize(Archive& ar, const unsigned int version) { ar& boost::serialization::base_object<A>(*this); } }; struct C : public B { template <class Archive> void serialize(Archive& ar, const unsigned int version) { ar& boost::serialization::base_object<B>(*this); } }; BOOST_CLASS_EXPORT(C); int main() { C c; return 0; }