erreur pour la fonction de hachage de la paire d'entiers

J'ai la classe suivante avec un unordered_map membre, et une fonction de hachage définis pour pair<int,int>

class abc
{public :
    unordered_map < pair<int,int> , int > rules ;
    unsigned nodes;
    unsigned packet ;     
};

namespace std {
template <>
    class hash < std::pair< int,int> >{
    public :
        size_t operator()(const pair< int, int> &x ) const
        {
            size_t h =   std::hash<int>()(x.first) ^ std::hash<int>()(x.second);
            return  h ;
        }
    };
}

Mais j'obtiens les erreurs suivantes :

error: invalid use of incomplete type struct std::hash<std::pair<int, int> >

error: declaration of struct std::hash<std::pair<int, int> >

error: type std::__detail::_Hashtable_ebo_helper<1, std::hash<std::pair<int, int> >, true>’ is not a direct base of std::__detail::_Hash_code_base<std::pair<int, int>, std::pair<const std::pair<int, int>, int>, std::__detail::_Select1st, std::hash<std::pair<int, int> >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, true>’
  • Vous devez transmettre declate template<typename T> class hash;
  • Une déclaration anticipée est insuffisante. La coopérative doit définir la spécialisation avant class abc.
  • Ouais je vois que maintenant.
  • Qu'arriverait-il si deux programmeurs essayé dans les deux composantes d'un même programme?
InformationsquelleAutor Shambo | 2013-12-15