Générique de hachage pour les tuples dans unordered_map / unordered_set

Pourquoi ne pas std::unordered_map<tuple<int, int>, string> juste
travailler hors de la boîte?
Il est pénible d'avoir à définir une fonction de hachage pour tuple<int, int>, par exemple

template<> struct do_hash<tuple<int, int>>                               
{   size_t operator()(std::tuple<int, int> const& tt) const {...}  }; 

La construction d'une non-ordonnée carte avec les tuples que les clés (Matthieu M.) montre comment
automatiser ce pour boost::tuple. Est-il de toute façon de le faire pour c++0x tuples sans l'aide de variadic templates?

Assurément, ce doit être dans la norme 🙁

  • Si vous êtes à l'aide de C++0x pourquoi ne pas utiliser variadic templates? (ou est-il une mise en œuvre avec les tuples, mais pas de varidic modèles?)
  • VC++ 2010 correspond à cette description (et il semble que la prochaine version de VC++ est probable aussi).
  • Si std::tuple est mis en œuvre par l'écriture manuelle de modèles de 1 à N-arité (comme boost::tuple), alors je pense que le std::hash de la spécialisation nécessaire pour hacher les tuples devra également être écrit manuellement (en utilisant trop intelligent prétraitement?) de la même manière. Aaargh!