Boost
boost
arrow_drop_down
Boost news learn community libraries releases
Join

PrevUpHomeNext

Boost.TypeIndex Header Reference

Includes minimal set of headers required to use the Boost.TypeIndex library.

By inclusion of this file most optimal type index classes will be included and used as a boost::typeindex::type_index and 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 &);
  }
}

Contains boost::typeindex::ctti_type_index class that is constexpr if C++14 constexpr is supported by compiler.

boost::typeindex::ctti_type_index class can be used as a drop-in replacement for std::type_index.

It is used in situations when typeid() method is not available or BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY macro is defined.

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();
  }
}

Contains the basic utilities necessary to fully emulate dynamic_cast for language level constructs (raw pointers and references).

boost::typeindex::runtime_cast is a drop in replacement for dynamic_cast that can be used in situations where traditional rtti is either unavailable or undesirable.

Contains the overload of boost::typeindex::runtime_pointer_cast for boost::shared_ptr types.

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 *);
  }
}

Contains the overload of boost::typeindex::runtime_cast for reference types.

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 &);
  }
}

Contains the macros BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST and BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS.


BOOST_TYPE_INDEX_REGISTER_RUNTIME_CLASS(...)
BOOST_TYPE_INDEX_IMPLEMENT_RUNTIME_CAST(...)
BOOST_TYPE_INDEX_NO_BASE_CLASS

Contains the overload of boost::typeindex::runtime_pointer_cast for std::shared_ptr types.

namespace boost {
  namespace typeindex {
    template<typename T, typename U> 
      std::shared_ptr< T > runtime_pointer_cast(std::shared_ptr< U > const &);
  }
}

Contains boost::typeindex::stl_type_index class.

boost::typeindex::stl_type_index class can be used as a drop-in replacement for std::type_index.

It is used in situations when RTTI is enabled or typeid() method is available. When typeid() is disabled or BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY macro is defined boost::typeindex::ctti is usually used instead of 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