Bonjour amis métaprogrammeurs.

Je cherche à savoir si il est possible de créer un type_traits dont la ::value est true lorsque les 2 classes passées en paramètre sont 2 spécialisations d'une même classe template (avec ou non des paramètres template différents), et false si ce n'est pas le cas. Ce qui complique la tâche c'est que j'aimerai que ça marche avec des paramètres templates qui peuvent être des types mais aussi des valeurs.

Je souhaiterais par exemple que quand je passe un std::array<double, 3> et un std::array<int, 5>, le type_traits retourne true (les deux types sont des std::array), et false quand je passe par exemple un std::array<double, 3> et un std::vector<int>.

J'offre mon éternelle reconnaissance à celui qui trouvera comment faire cela en C++11