【发布时间】:2017-04-26 19:04:43
【问题描述】:
我有一个看起来像这样的模板类:
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 非常相似。 不幸的是,这不起作用,只会给出一堆无益的错误。有什么见解吗?
【问题讨论】:
-
“这不起作用”不是一个有用的问题描述。
-
如果这些错误对你有帮助,你就不需要问了。但它们对你没有帮助的事实并不意味着它们对我们没有帮助,你希望他们解决问题。发布完整的错误消息以及minimal reproducible example(重现它们的代码)。
-
不以“in file included from”或“instantiation of”或“required from here”开头的第一行错误消息是什么?
-
我认为
std::hash的部分特化没有任何问题,您需要显示实际错误(以及相关代码) -
请注意,“模板类”具有误导性。您还没有课程。
Indexer是一个“类模板”,一种用于创建类的模板。模板实例化Indexer<5, int>将是一个类。