我正在尝试创建一个 std::unordered_map
,其中值是一个 std::type_index
。以下代码片段可行:
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(..)
是值而不是键?
failingMap[1]
,如果在映射中未找到默认条目,则创建一个默认条目。例如,可以使用::try_emplace
函数。 - Sopel