我正在编写一个类,它有一个自己类型的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);
}
};
}
Run Code Online (Sandbox Code Playgroud)
提前致谢