Index: boost/serialization/void_cast.hpp =================================================================== --- boost/serialization/void_cast.hpp (リビジョン 58465) +++ boost/serialization/void_cast.hpp (作業コピー) @@ -106,10 +106,12 @@ void const * const ); protected: - void recursive_register(bool includes_virtual_base = false) const; + void recursive_register(bool includes_virtual_base = false); void recursive_unregister() const; +private: + // Data members + bool m_includes_virtual_base; public: - // Data members const extended_type_info * m_derived; const extended_type_info * m_base; /*const*/ std::ptrdiff_t m_difference; Index: libs/serialization/src/void_cast.cpp =================================================================== --- libs/serialization/src/void_cast.cpp (リビジョン 58465) +++ libs/serialization/src/void_cast.cpp (作業コピー) @@ -208,9 +208,10 @@ // implementation of void caster base class BOOST_SERIALIZATION_DECL(void) -void_caster::recursive_register(bool includes_virtual_base) const { +void_caster::recursive_register(bool includes_virtual_base) { void_cast_detail::set_type & s = void_cast_detail::void_caster_registry::get_mutable_instance(); + m_includes_virtual_base = includes_virtual_base; #ifdef BOOST_SERIALIZATION_LOG std::clog << "recursive_register\n"; @@ -239,7 +240,7 @@ (*it)->m_derived, m_base, m_difference + (*it)->m_difference, - includes_virtual_base, + includes_virtual_base || (*it)->m_includes_virtual_base, this ); } @@ -256,7 +257,7 @@ m_derived, (*it)->m_base, m_difference + (*it)->m_difference, - includes_virtual_base, + includes_virtual_base || (*it)->m_includes_virtual_base, this ); } Index: libs/serialization/test/Jamfile.v2 =================================================================== --- libs/serialization/test/Jamfile.v2 (リビジョン 58465) +++ libs/serialization/test/Jamfile.v2 (作業コピー) @@ -72,6 +72,7 @@ [ test-bsl-run_files test_derived_class : A ] [ test-bsl-run_files test_derived_class_ptr : A ] [ test-bsl-run_files test_diamond ] + [ test-bsl-run_files test_diamond_complex ] [ test-bsl-run_files test_exported : polymorphic_base ] [ test-bsl-run_files test_class_info_load ] [ test-bsl-run_files test_class_info_save ]