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