【发布时间】:2021-06-23 17:24:38
【问题描述】:
如何在不定义仿函数的情况下在std::unordered_set<std::pair<>> 中使用boost::hash_value<std::pair<>>?
以下不起作用:
typedef std::pair<unsigned, unsigned> S;
typedef size_t (hash_value_sample)(const S&);
std::function<hash_value_sample> hasher =
static_cast<hash_value_sample&>(boost::hash_value<unsigned, unsigned>);
std::unordered_set<S, decltype(hasher)> set;
set.insert(S(10, 10));
执行中止。
terminate called after throwing an instance of 'std::bad_function_call'
what(): bad_function_call
Abort
我认为上述方法不起作用,因为 hasher() 不存在。我正在使用 g++ -std=c++14
【问题讨论】:
-
这里是 mcve:godbolt.org/z/nYsr5M4e1
标签: c++ boost unordered-set