...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS — Macro used to make a class compatible with boost::typeindex::runtime_cast.
// In header: <boost/type_index/runtime_cast/register_runtime_class.hpp>
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(base_class_seq)
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS generates a virtual function in the current class that, when combined with the supplied base class information, allows boost::typeindex::runtime_cast to accurately convert between dynamic types of instances of the current class.
Example:
struct base1 { BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(BOOST_TYPE_INDEX_NO_BASE_CLASS) virtual ~base1(); }; struct base2 { BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(BOOST_TYPE_INDEX_NO_BASE_CLASS) virtual ~base2(); }; struct derived1 : base1 { BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((base1)) }; struct derived2 : base1, base2 { BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS((base1)(base2)) }; ... base1* pb1 = get_object(); if(derived2* pb2 = boost::typeindex::runtime_cast<derived2*>(pb1)) { /* ... */ }
Parameters: |
|