You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从std::type_index获取const std::type_info&?

如何从std::type_index获取const std::type_info&?

没问题,这其实很简单——你可以直接调用std::type_index提供的type_info()成员函数来获取对应的const std::type_info&引用。

给你举个实际可运行的代码例子:

#include <typeindex>
#include <typeinfo>
#include <iostream>

int main() {
    // 从int类型的type_info创建type_index实例
    auto type_idx = std::type_index(typeid(int));
    // 调用type_info()成员函数拿到对应的type_info引用
    const std::type_info& type_info_ref = type_idx.type_info();
    
    // 验证输出,打印类型名称(不同编译器的name()输出格式可能有差异)
    std::cout << "对应的类型名称:" << type_info_ref.name() << std::endl;
    return 0;
}

再补充下你关心的几个细节:

  • 你对std::type_index的理解完全正确:它本质就是对const std::type_info*的轻量包装,核心目的就是为类型信息提供std::hash、std::equal_to和std::less的适配接口,这样就能把类型信息作为键放进std::unordered_map、std::set这类需要可哈希/可比较键的标准容器里使用。
  • 关于std::type_info对象的存储:它们确实是在程序编译阶段就静态生成的,每个唯一的类型都会对应一个全局的type_info实例。所以std::type_index里保存的指针指向的是这个长期有效的静态对象,你通过type_info()拿到的引用完全安全,不用担心出现悬垂引用的问题。

备注:内容来源于stack exchange,提问作者David Carpenter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:28:01