Question C ++ 11 is_same type trait pour les modèles


Est-il possible de vérifier ce type T est un std::array de type et de taille arbitraires?

Je peux vérifier pour un tableau particulier, par exemple:

    is_same<T, std::array<int,5>>::value

Mais je voudrais vérifier cela T est une instanciation de std::array. Quelque chose comme ci-dessous (qui, bien sûr, ne compile pas):

    is_same<T, std::array>::value

Y a-t-il un moyen d'y parvenir (peut-être ne pas utiliser is_same)?


23
2018-06-03 20:33


origine


Réponses:


Vous devez écrire le vôtre, mais c'est simple:

template<typename>
struct is_std_array : std::false_type {};

template<typename T, std::size_t N>
struct is_std_array<std::array<T,N>> : std::true_type {};

32
2018-06-03 20:35