Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

Boost.TypeIndex 头文件参考

头文件 <boost/type_index.hpp>
头文件 <boost/type_index/ctti_type_index.hpp>
头文件 <boost/type_index/runtime_cast.hpp>
头文件 <boost/type_index/runtime_cast/boost_shared_ptr_cast.hpp>
头文件 <boost/type_index/runtime_cast/pointer_cast.hpp>
头文件 <boost/type_index/runtime_cast/reference_cast.hpp>
头文件 <boost/type_index/runtime_cast/register_runtime_class.hpp>
头文件 <boost/type_index/runtime_cast/std_shared_ptr_cast.hpp>
头文件 <boost/type_index/stl_type_index.hpp>
头文件 <boost/type_index/type_index_facade.hpp>

包含使用 Boost.TypeIndex 库所需的最小头文件集。

通过包含此文件,大多数最佳类型索引类将被包含并用作 boost::typeindex::type_indexboost::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_castboost::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 > &);
  }
}

PrevUpHomeNext