我正在使用英特尔TBB Concurrent Hash Map tbb::hash_map<std::string, std::reference_wrapper<Clusters>>
,我想使用
tbb::concurrent_hash_map<std::string, std::reference_wrapper<Clusters>>::accessor a;
if(table.find(a, operation.get().GetKey()))
{
a->second.get().AddOperation(operation);
}
但是它给了error: no matching function for call to ‘std::reference_wrapper<Clusters>::reference_wrapper()
。所以问题是reference_wrapper
没有find
需要的默认构造函数。有什么办法可以绕过这个吗?
答案 0 :(得分:1)
这似乎是find()
或其文档的实现中的错误。要么它不需要映射类型为DefaultConstructible
,要么它不需要记录它需要它。
我认为这不是你能解决的问题。作为一种解决方法,您可以在地图中存储指针而不是引用包装器。