std::unordered_set как член класса Foo

Я пишу класс, который имеет в качестве члена неупорядоченное_множество своего типа. Поэтому мне нужно написать специализацию для 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);
        }
    };
}

Спасибо заранее

5
задан James McNellis 8 January 2012 в 22:45
поделиться