g++ -Wall -pedantic -ansi -O3 -c -o boost_serialize_protected_bug_minimal.o boost_serialize_protected_bug_minimal.cc /usr/include/boost/serialization/base_object.hpp: In function ‘typename boost::serialization::detail::base_cast::type& boost::serialization::base_object(Derived&) [with Base = Base2, Derived = Derived]’: boost_serialize_protected_bug_minimal.cc:46: instantiated from ‘void Derived::serialize(Archive&, unsigned int) [with Archive = boost::archive::text_iarchive]’ /usr/include/boost/serialization/access.hpp:109: instantiated from ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_iarchive, T = Derived]’ /usr/include/boost/serialization/serialization.hpp:74: instantiated from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_iarchive, T = Derived]’ /usr/include/boost/serialization/serialization.hpp:133: instantiated from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::text_iarchive, T = Derived]’ /usr/include/boost/archive/detail/iserializer.hpp:152: instantiated from ‘void boost::archive::detail::iserializer::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::archive::text_iarchive, T = Derived]’ boost_serialize_protected_bug_minimal.cc:59: instantiated from here /usr/include/boost/serialization/base_object.hpp:103: error: ‘Base2’ is an inaccessible base of ‘Derived’ /usr/include/boost/serialization/smart_cast.hpp: In static member function ‘static T boost::serialization::smart_cast_impl::pointer::polymorphic::cast(U*) [with U = const Derived, T = const Base2*]’: /usr/include/boost/serialization/smart_cast.hpp:232: instantiated from ‘static T boost::serialization::smart_cast_impl::pointer::cast(U*) [with U = const Derived, T = const Base2*]’ /usr/include/boost/serialization/smart_cast.hpp:288: instantiated from ‘T boost::serialization::smart_cast(U) [with T = const Base2*, U = const Derived*]’ /usr/include/boost/serialization/void_cast.hpp:140: instantiated from ‘const void* boost::serialization::void_cast_detail::void_caster_primitive::upcast(const void*) const [with Derived = Derived, Base = Base2]’ boost_serialize_protected_bug_minimal.cc:59: instantiated from here /usr/include/boost/serialization/smart_cast.hpp:202: error: ‘Base2’ is an inaccessible base of ‘Derived’ make: *** [boost_serialize_protected_bug_minimal.o] Error 1