我正在使用tbb::concurrent_unordered_map
替换我的程序中的std::map
,如下所示:
Before:
class KvSubTable;
typedef std::weak_ptr<KvSubTable> KvSubTableId;
std::map<KvSubTableId, int, std::owner_less<KvSubTableId> > mEntryMap;
现在,我使用tbb::concurrent_unordered_map
替换std::map
,但它有一些编译错误:
tbb::concurrent_unordered_map<KvSubTableId, int, tbb::tbb_hash<KvSubTableId>, std::owner_less<KvSubTableId> > mEntryMap;
CPP / EXT / AMD64 /包含/ TBB /内部/ _tbb_hash_compare_impl.h:66:37: 错误:类型&#39; const中的static_cast无效 的std :: weak_ptr的&#39;输入&#39; std :: size_t
{aka long unsigned int}&#39;
return static_cast(t)* internal :: hash_multiplier;
我尝试过这样的解决方案,但它不起作用:
template <typename T>
inline bool operator==(const std::weak_ptr<T>& t, const std::weak_ptr<T>& u)
{
return !t.owner_before(u) && !u.owner_before(t);
}
那么,它如何运作,请帮助......