blob: 304110e322cc8a4d9d26ce74e53016de09df5dfb [file] [log] [blame]
[/
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 <boost/core/typeinfo.hpp>]
The header `<boost/core/typeinfo.hpp>` 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 <boost/core/typeinfo.hpp>
#include <iostream>
template<class T1, class T2> struct X
{
};
int main()
{
typedef X<void const*, void(*)(float)> T;
boost::core::typeinfo const & ti = BOOST_CORE_TYPEID(T);
std::cout << boost::core::demangled_name( ti ) << std::endl;
}
``
[endsect]
[endsect]
[endsect]