1

ブースト ユニット タイプが含まれる場所tbb::concurrent_hash_mapのキーでを使用したい。現在使用している HashCompare 構造体は次のようになります。std::tuple<A...>A...

template<typename K>
struct HashCompare {
    static size_t hash( const K& key )
    {
        boost::hash<K> hasher;
        return hasher(key);
    }
    static bool equal( const K& key1, const K& key2 ) {return key1 == key2;}
};

ブーストユニット以外のすべてのタイプでこれを試してみましたが、ブーストユニットではうまくいきませんでした。boost::hashカスタムタイプで関数を拡張できることは知っていますが、それはできないようです。私は非常に多くのユニットを持っているので、次の形式のテンプレートでこれを行いたいと思いました:

std::size_t hash_value(T const& t){
    boost::hash<double> hasher;
    return hasher(t.value());
}

この関数をboost名前空間またはユニットが定義されている名前空間に配置しても機能しませんでした。

HashCompare::hashブースト ハッシュ関数をカスタム タイプに拡張したり、ブースト ユニットのみを使用する関数のテンプレートを作成したりするにはどうすればよいですか?

4

1 に答える 1