我有一个模板类,看起来像这样:
template <int N, class TypeId> class Indexer {
...
}
我想在std::unordered_map
中使用它,我需要一个哈希函数。在代码库中我们已经有了类似的东西(但在一个非模板化的类上),所以我试着这样做:
namespace std {
template <int N, class TypeId>
struct hash<Indexer<N, TypeId> > {
size_t operator()(const Indexer<N, TypeId>& id) const noexcept {
...
}
};
}
它也非常类似于another answer。不幸的是,这不起作用,只是给出了一堆无用的错误。有什么见解吗?
2条答案
按热度按时间oaxa6hgo1#
在Indexer类的定义末尾似乎缺少了一个分号。
这是可行的:
gcxthw6b2#
使用Visual Studio 2022和C++ 14,我也得到了错误,上面的解决方案都不起作用。省略“hash”后面的模板参数对我来说是个窍门。