【发布时间】:2018-07-02 14:23:49
【问题描述】:
有没有办法在std::unordered_map 中使用可变参数模板作为 Key 模板参数?
我尝试过这样做:
template<typename T, typename ...Args>
class Wrapper {
public:
// some staff
private:
unordered_map<Args, T> hashmap;
};
但是得到了这个错误:
错误 C3520 'Args':参数包必须在此上下文中展开
【问题讨论】:
-
你想达到什么目的?
-
使用可变参数模板作为键到底是什么意思?键必须是类型,您可以实例化对象。您不能实例化类型为可变参数包的对象。最接近的是元组。你想要一个以元组为键的 unordered_map 吗?
-
std::tuple呢? -
如果元组键是您想要的,那么将它们用作哈希映射中的键需要一点(不是太多)工作:stackoverflow.com/questions/20834838/…。
-
unordered_map<T, tuple<Args...>> hashmap;
标签: c++ c++11 templates variadic-templates unordered-map