Boost C++ 库

...世界上最受推崇和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

PrevUpHomeNext

第 39 章。Boost.TypeIndex 4.1

根据 Boost 软件许可协议 1.0 版分发。(请参阅随附文件 LICENSE_1_0.txt 或访问 https://boost.ac.cn/LICENSE_1_0.txt

目录

动机
入门
如何使用
Boost.Any 示例
Boost.Variant 示例
配置和构建库
工作原理
示例
获取人类可读和经过名称修饰的类型名称
在容器中存储有关类型的信息
通过继承获取真实的类型名称
在 RTTI 不可用或不理想的情况下使用 runtime_cast
精确类型匹配:存储带有 const、volatile 和引用限定符的类型
有无 RTTI 的 raw_name() 和 pretty_name() 输出表
C++14:编译时检查命名空间
C++14:检查提供的类型的词典顺序
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>
制作自定义 type_index
基础知识
在运行时获取类型信息
在代码中各处使用新的类型信息
空间和性能
代码膨胀
RTTI 模拟限制
定义 BOOST_TYPE_INDEX_FUNCTION_SIGNATURE 宏
修复 pretty_name() 输出
混合使用开启 RTTI 和关闭 RTTI 的源文件
致谢

有时需要在运行时获取和存储有关类型的信息。对于这种情况,通常使用类似 &typeid(T) 或 C++11 类 std::type_index 的构造,问题就从这里开始

  • typeid(T)std::type_index 需要运行时类型信息 (RTTI)
  • typeid(T) 的某些实现错误地没有从类型中剥离 const、volatile 和引用
  • 一些编译器存在错误,并且不能正确地跨共享库比较 std::type_info 对象
  • 目前只有少数标准库实现提供了 std::type_index
  • 没有简单的方法来存储类型信息而不剥离 const、volatile 和引用
  • 没有友好且可移植的方法来获取人类可读的类型名称
  • 没有简单的方法来制作您自己的类型信息类

Boost.TypeIndex 库旨在解决所有这些问题。

[Note] 注意

T 在这里表示类型。可以将其视为 template <class T> 中的 T


PrevUpHomeNext