Мне нужно указать некоторые данные на карте по типу. В настоящее время у меня есть что-то вроде этого:
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
?