Заголовок<<boost/core/typeinfo.hpp>>определяет класс<boost::core::typeinfo>, который является псевдонимом для<std::type_info>, когда включен RTTI, и является разумной заменой, когда RTTI не поддерживается.
Макро<BOOST_CORE_TYPEID>, при применении к типу<T>, является эквивалентом<typeid(T)>и производит отсылку к объекту const<typeinfo>.
Функция<boost::core::demangled_name>принимает<boost::core::typeinfoconst&ti>и либо возвращает<ti.name()>, когда эта строка не должна быть распутана, либо<boost::core::demangle(ti.name())>, когда она это делает. Возвращение<boost::core::demangled_name>в первом случае<charconst*>и<std::string>во втором.
namespace boost
{
namespace core
{
    class typeinfo;
     demangled_name( typeinfo const & ti );
}
}
#define BOOST_CORE_TYPEID(T) 
 
#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;
}