This is caused by a bug in the boost serialisation, well at least in 1.39 Where is assumes that shared ptr must be polymorphic I have already reported a similar problem. i.e
... boost_1_39_0/boost/ serialization/extended_type_info_typeid.hpp", line 88: warning #2414-D: delete of pointer to incomplete class BOOST_STATIC_WARNING(boost::is_polymorphic<T>::value); ^detected during: instantiation of "const boost::serialization::extended_type_info
*boost::serialization::extended_type_info_typeid<T>::get_derived_extended_type_info(const
T &) const [with T=Concrete]" at line 92 of
"/scratch/ma/emos/ma0/hpia64/boost/boost_1_39_0/boost/archive/shared_ptr_helper.hpp"
It looks like if we are serialising via a base ptr, and the base class is serialising concrete data member via a shared ptr, it has assumed that the type must be polymorphic. This does not seem right to me ?
The hacky way to stop your warning message would be add a dummy virtual function. Best regards, Ta, Avi