【发布时间】:2018-02-22 04:00:30
【问题描述】:
我正在尝试创建一个std::unordered_map,其中值 是std::type_index。以下 sn-p 有效:
std::unordered_map<std::type_index, int> workingMap;
workingMap[typeid(int)] = 1;
workingMap[typeid(char)] = 2;
但是这个没有运行并抛出错误:
std::unordered_map<int, std::type_index> failingMap;
failingMap[1] = typeid(int);
failingMap[2] = typeid(char);
CS2512:“std::type_index::type_index”:没有合适的默认构造函数可用。
我不完全理解这个错误,这些例子中的构造函数有什么区别?是否可以制作一张 typeid(..) 是 value 而不是 key 的地图?
【问题讨论】:
-
通过
failingMap[1]创建一个默认条目,如果它在地图中没有找到。以::try_emplace为例
标签: c++ c++11 constructor rtti typeinfo