diff options
Diffstat (limited to 'libs/type_index/examples/inheritance.cpp')
-rw-r--r-- | libs/type_index/examples/inheritance.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/type_index/examples/inheritance.cpp b/libs/type_index/examples/inheritance.cpp index c2634397e0..3da75271e8 100644 --- a/libs/type_index/examples/inheritance.cpp +++ b/libs/type_index/examples/inheritance.cpp @@ -13,6 +13,7 @@ */ #include <boost/type_index.hpp> +#include <boost/type_index/runtime_cast/register_runtime_class.hpp> #include <iostream> struct A { @@ -21,6 +22,7 @@ struct A { }; struct B: public A { BOOST_TYPE_INDEX_REGISTER_CLASS }; struct C: public B { BOOST_TYPE_INDEX_REGISTER_CLASS }; +struct D: public C { BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(BOOST_TYPE_INDEX_NO_BASE_CLASS) }; void print_real_type(const A& a) { std::cout << boost::typeindex::type_id_runtime(a).pretty_name() << '\n'; @@ -31,6 +33,15 @@ int main() { const A& c_as_a = c; print_real_type(c_as_a); // Outputs `struct C` print_real_type(B()); // Outputs `struct B` + +/*` + It's also possible to use type_id_runtime with the BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS, which adds additional + information for runtime_cast to work. +*/ + D d; + const A& d_as_a = d; + print_real_type(d_as_a); // Outputs `struct D` + } //] [/type_index_derived_example] |