我有一个模板类,如下所示:
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非常相似。 不幸的是,这不起作用,只是给出了一堆无用的错误。任何见解?
答案 0 :(得分:2)
看起来你在Indexer类定义的末尾错过了一个分号。
这有效:
#include <functional>
template <int N, class TypeId> struct Indexer {};
namespace std {
template <int N, class TypeId>
struct hash<Indexer<N, TypeId> > {
size_t operator()(const Indexer<N, TypeId>& id) const noexcept { return 0; }
};
}
int main() {
return 0;
}