包含使用 Boost.TypeIndex 库所需的最小头文件集。
通过包含此文件,大多数最佳类型索引类将被包含并用作 boost::typeindex::type_index 和 boost::typeindex::type_info。
BOOST_TYPE_INDEX_REGISTER_CLASS BOOST_TYPE_INDEX_FUNCTION_SIGNATURE BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING BOOST_TYPE_INDEX_USER_TYPEINDEX BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY
namespace boost { namespace typeindex { typedef platform_specific type_index; typedef type_index::type_info_t type_info; template<typename T> type_index type_id(); template<typename T> type_index type_id_with_cvr(); template<typename T> type_index type_id_runtime(const T &); } }
包含 boost::typeindex::ctti_type_index 类,如果编译器支持 C++14 constexpr,则该类为 constexpr。
boost::typeindex::ctti_type_index 类可以作为 std::type_index 的直接替代品。
它用于 typeid() 方法不可用或定义了 BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY 宏的情况。
namespace boost { namespace typeindex { class ctti_type_index; // Helper method for getting detail::ctti_data of a template parameter T. template<typename T> unspecified ctti_construct(); } }
包含完全模拟语言级构造(原始指针和引用)的 dynamic_cast 所需的基本实用程序。
boost::typeindex::runtime_cast 是 dynamic_cast 的直接替代品,可以在传统 rtti 不可用或不需要的情况下使用。
包含 boost::typeindex::runtime_pointer_cast 对boost::shared_ptr 类型的重载。
namespace boost { template<typename T> class shared_ptr; namespace typeindex { template<typename T, typename U> boost::shared_ptr< T > runtime_pointer_cast(boost::shared_ptr< U > const &); } }
namespace boost { namespace typeindex { template<typename T, typename U> T runtime_cast(U *); template<typename T, typename U> T runtime_cast(U const *); template<typename T, typename U> T * runtime_pointer_cast(U *); template<typename T, typename U> T const * runtime_pointer_cast(U const *); } }
包含 boost::typeindex::runtime_cast 对引用类型的重载。
namespace boost { namespace typeindex { struct bad_runtime_cast; template<typename T, typename U> std::add_lvalue_reference< T >::type runtime_cast(U &); template<typename T, typename U> std::add_lvalue_reference< constT >::type runtime_cast(U const &); } }
包含宏 BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST 和 BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS。
BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(...) BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST(...) BOOST_TYPE_INDEX_NO_BASE_CLASS
包含 boost::typeindex::runtime_pointer_cast 对 std::shared_ptr 类型的重载。
namespace boost { namespace typeindex { template<typename T, typename U> std::shared_ptr< T > runtime_pointer_cast(std::shared_ptr< U > const &); } }
包含 boost::typeindex::stl_type_index 类。
boost::typeindex::stl_type_index 类可以作为 std::type_index 的直接替代品。
当启用 RTTI 或 typeid() 方法可用时使用它。当 typeid() 被禁用或定义了 BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY 宏时,通常使用 boost::typeindex::ctti 代替 boost::typeindex::stl_type_index。
namespace boost { namespace typeindex { class stl_type_index; } }
namespace boost { namespace typeindex { template<typename Derived, typename TypeInfo> class type_index_facade; // noexcept comparison operators for type_index_facade classes. bool operator==,!=,<,...(const type_index_facade & lhs, const type_index_facade & rhs); // noexcept comparison operators for type_index_facade and it's TypeInfo classes. bool operator==,!=,<,...(const type_index_facade & lhs, const TypeInfo & rhs); // noexcept comparison operators for type_index_facade's TypeInfo and type_index_facade classes. bool operator==,!=,<,...(const TypeInfo & lhs, const type_index_facade & rhs); // Ostream operator that will output demangled name. template<typename CharT, typename TriatT, typename Derived, typename TypeInfo> std::basic_ostream< CharT, TriatT > & operator<<(std::basic_ostream< CharT, TriatT > & ostr, const type_index_facade< Derived, TypeInfo > & ind); template<typename Derived, typename TypeInfo> std::size_t hash_value(const type_index_facade< Derived, TypeInfo > &); } }