我正在尝试使用std :: chrono :: duration对一组对象进行关键字排序。 这将无法编译:
#include <unordered_map>
#include <chrono>
class Foo final
{
public:
Foo() {}
int y;
};
int main(void)
{
auto map = std::unordered_map<std::chrono::duration<int, std::milli>, Foo>();
map[std::chrono::duration<int, std::milli>(5)].y = 0;
return 0;
}
我猜问题在于没有为std::chrono::duration实现std::hash?如果是这样,有没有一种方法可以避免使用易于破解的count()作为键值?
/usr/include/c++/4.9/bits/hashtable_policy.h: 在 'struct std::__detail::__is_noexcept_hash >, std::hash > > >' 的实例化中:
float
不可哈希,这就是问题所在。 - Sam Varshavchik