独自のタイプの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);
}
};
}
前もって感謝します