12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- [/
- 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]
|