tve*_*eeg 16 c++ constructor rtti typeinfo c++11
我想创建一个std::unordered_map,其中值是std::type_index.以下代码段有效:
std::unordered_map<std::type_index, int> workingMap;
workingMap[typeid(int)] = 1;
workingMap[typeid(char)] = 2;
Run Code Online (Sandbox Code Playgroud)
但是这个没有运行并抛出一个错误:
std::unordered_map<int, std::type_index> failingMap;
failingMap[1] = typeid(int);
failingMap[2] = typeid(char);
Run Code Online (Sandbox Code Playgroud)
CS2512:'std :: type_index :: type_index':没有合适的默认构造函数可用.
我不完全理解这个错误,这些例子中的构造函数之间有什么区别?是否有可能使一个地图,typeid(..)是价值,而不是重点?
Ale*_*agh 19
问题是operator[],不是地图的实际使用.问题是,如果关键是没有找到,operator[]将指定一个默认值,并返回一个可修改的引用该值,这是不可能的std::type_index.您可以使用emplace,insert,try_emplace,或不需要默认构造函数的任何其他修改.
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |