Я пишу класс, который имеет в качестве члена неупорядоченное_множество своего типа.
Поэтому мне нужно написать специализацию для hash
. Эта специализация должна быть определена после объявления Foo. Но мне кажется, что специализация для hash
уже нужна до определения члена unordered_set
. По крайней мере, он не компилируется и не работает там. Я попробовал прямое объявление шаблона хэша, но и там не смог заставить его работать.
Соответствующий фрагмент кода:
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);
}
};
}
Спасибо заранее