This is question about use of asserts in boost serialisation. As a program migrates from one release to another the api changes. This is expected. In my case I have client/server that uses boost serialisation. I was expecting an throw due to the incompatibility not a an assert. The assert crashes my client, giving no chance for recovery, and informing the user that they are using previous out of date release/server. In may case: boost_iarchive.cpp inline const basic_pointer_iserializer * 399 basic_iarchive_impl::load_pointer( 400 basic_iarchive &ar, 401 void * & t, 402 const basic_pointer_iserializer * bpis_ptr, 403 const basic_pointer_iserializer * (*finder)( 404 const boost::serialization::extended_type_info & type_ 405 ) 406 407 ){ ..... 436 BOOST_ASSERT(NULL != bpis_ptr); 437 class_id_type new_cid = register_type(bpis_ptr->get_basic_serializer()); 438 int i = cid; 439 cobject_id_vector[i].bpis_ptr = bpis_ptr; 440 BOOST_ASSERT(new_cid == cid); // yikes How do people get round this issue, where old and new release of software need to co-exist ? Would it be possible to use a #define to configure use of asserts or throw ? Any help apperciated . Best regards, Ta, Avi