我需要按类型在地图上输入一些数据。目前我的代码大致如下:
struct TypeInfoComparer
{
bool operator()(std::type_info const* a, std::type_info const* b) const
{
return a->before(*b);
};
};
std::map<std::type_info const*, Foo, TypeInfoComparer> d_fooByTypeId;
我可以使用以下方式查找它(例如,在具有<typename T>
的模板方法中):
auto pair = d_fooByTypeId.find(&typeid(T));
然而今天我在阅读有关std::type_index
的文章,它似乎是为了在这种情况下使用而设计的。
我对提高我的C++知识感兴趣。请问是否应该修改我的代码以使用std::type_index
,以及为什么?除了能够删除TypeInfoComparer
之外,还有其他原因吗?
typeid
返回的type_info
对于给定类型是持久且唯一的,这是因为什么原因? - Yakk - Adam Nevraumontbefore
成员函数。我不知道为什么每个人都忽略了这个事实。 - rici