オブジェクトのハッシュ関数を作成しています。Generic Hash function for all STL-containers のおかげで、すでにコンテナーをハッシュし、ハッシュを組み合わせることができます。しかし、私のクラスには列挙型もあります。もちろん、すべての列挙型に対してハッシュ関数を作成することはできますが、それは良い考えではないようです。の一般的な仕様を作成してstd::hash
、すべての列挙型に適用できるようにすることは可能ですか? とを使用して、そのようなstd::enable_if
ものstd::is_enum
namespace std {
template <class E>
class hash<typename std::enable_if<std::is_enum<E>::value, E>::type> {
public:
size_t operator()( const E& e ) const {
return std::hash<std::underlying_type<E>::type>()( e );
}
};
};
PS。このコードはコンパイルされません
error: template parameters not used in partial specialization:
error: ‘E’