Boost C++ Libraries Home Libraries People FAQ More


Chapter 1. Boost.TypeIndex 3.0

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at

Table of Contents

Getting started
How to use
Example with Boost.Any
Example with Boost.Variant
How it works
Getting human readable and mangled type names
Storing information about a type in container
Getting through the inheritance to receive a real type name
Exact type match: storing type with const, volatile and reference
Boost.TypeIndex Header Reference
Header <boost/type_index.hpp>
Header <boost/type_index/ctti_register_class.hpp>
Header <boost/type_index/ctti_type_index.hpp>
Header <boost/type_index/stl_register_class.hpp>
Header <boost/type_index/stl_type_index.hpp>
Header <boost/type_index/type_index_facade.hpp>
Making own type_index
Getting type infos at runtime
Using new type infos all around the code
Space and Performance
Code bloat
Compiler support
Mixing sources with RTTI on and RTTI off

Sometimes getting and storing information about a type at runtime is required. For such cases a construction like &typeid(T) or C++11 class std::type_index is usually used. And that is the point, where problems start:

  • typeid(T) and std::type_index require Run Time Type Info (RTTI)
  • some implementations of typeid(T) strip const, volatile and references from type, while others don't
  • some compilers have bugs and do not correctly compare std::type_info objects across shared libraries
  • only a few implementations of Standard Library currently provide std::type_index
  • no easy way to store type info without stripping const, volatile and references
  • no nice and portable way to get human readable type names
  • no way to easily make your own type info class

Boost.TypeIndex library was designed to work around all those issues.

[Note] Note

T means type here. Think of it as of T in template <class T>

[Warning] Warning

Version 3.0 of this library is waitning for Boost mini-review.

Last revised: March 05, 2014 at 11:15:27 GMT