dynamic_cast<T>(U * u)for casting a pointer at runtime between two related types. However, this can only be used for polymorphic classes. That is, it can only be used with related classes which have at least one virtual function. Limiting the serializaton of pointers to only such class would diminish the applicability of the library.
template<class Derived, class Base> const void_cast_detail::void_caster & void_cast_register( Derived const * derived = NULL, Base * const base = NULL )
Derivedis immediately derived from
Basein a global table.
automatically derives the fact that A can be upcast to C and vice-versa.
void_cast_register<A, B>(); void_cast_register<B, C>();
void * void_upcast( extended_type_info const & derived_type, extended_type_info const & base_type, void * const t );
void * void_downcast( extended_type_info const & derived_type, extended_type_info const & base_type, void * const t );
extended_type_inforecords. An attempt to cast between types not "registered" with
void_cast_registerwill throw a
boost::archive::archive_exceptionwith value equal to
© Copyright Robert Ramey 2002-2004. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)