我正在编写一个具有自己类型的 unordered_set 作为成员的类。因此,我需要为hash<Foo>
. 这个特化需要在声明 Foo 之后定义。但在我看来,好像hash<Foo>
在定义成员之前我已经需要专业化了unordered_set<Foo>
。至少它没有编译并在那里失败。我尝试了哈希模板的前向声明,但也无法使其正常工作。
相关的代码片段是:
class Foo {
public:
int i;
std::unordered_set<Foo> dummy;
Peer(std::unordered_set<Foo>);
};
namespace std {
template<> struct hash<Foo>
{
size_t operator()(const Foo& f) const
{
return hash<int>()(f.i);
}
};
}
提前致谢