Это происходит потому, что нет специализации для std::tr1::hash<Key>
с Key = std::pair<int, int>
.Вы должны специализироваться std::tr1::hash<Key>
с Key = std::pair<int, int>
перед объявлением tr1::unordered_map<Pair,bool> h;
.Это происходит потому, что std
не знает, как хешировать pair<int, int>
.
. Ниже приведен пример того, как специализироваться std::tr1::hash<>
template <>
struct std::tr1::hash<std::pair<int, int> > {
public:
size_t operator()(std::pair<int, int> x) const throw() {
size_t h = SOMETHING;//something with x
return h;
}
};