[/ Copyright 2014 Peter Dimov Distributed under the Boost Software License, Version 1.0. See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt ] [section:typeinfo typeinfo] [simplesect Authors] * Peter Dimov [endsimplesect] [section Header ] The header `` defines a class `boost::core::typeinfo`, which is an alias for `std::type_info` when RTTI is enabled, and is a reasonable substitute when RTTI is not supported. The macro `BOOST_CORE_TYPEID`, when applied to a type `T`, is the equivalent of `typeid(T)` and produces a reference to a const `typeinfo` object. The function `boost::core::demangled_name` takes a `boost::core::typeinfo const & ti` and either returns `ti.name()`, when that string doesn't need to be demangled, or `boost::core::demangle(ti.name())`, when it does. The return type of `boost::core::demangled_name` is `char const*` in the first case and `std::string` in the second. [section Synopsis] `` namespace boost { namespace core { class typeinfo; /* char const* or std::string */ demangled_name( typeinfo const & ti ); } } #define BOOST_CORE_TYPEID(T) /*unspecified*/ `` [endsect] [section Example] `` #include #include template struct X { }; int main() { typedef X T; boost::core::typeinfo const & ti = BOOST_CORE_TYPEID(T); std::cout << boost::core::demangled_name( ti ) << std::endl; } `` [endsect] [endsect] [endsect]