Boost C++ 库

...世界上最受尊敬和设计最精良的 C++ 库项目之一。 —— Herb SutterAndrei AlexandrescuC++ 编码标准

PrevUpHomeNext

第 41 章。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