Il existe std::array<T, N>::size()
, mais il n'est pas statique, il nécessite donc une instance de std::array
. Existe-t-il un moyen d'obtenir la valeur qu'il renvoie (qui est la valeur N
de std::array<T, N>
) sans avoir à construire une instance du tableau? Pour un tableau normal, j'aurais pu utiliser sizeof
, mais je ne vois aucune garantie que ce sizeof(std::array<T, N>) == N * sizeof(T)
soit vrai.
9
N
, pourquoi devez-vous demanderarray
à le reproduire pour vous?sizeof(std::array<T, N>) == N * sizeof(T)
n'a pas à être vrai.N
.N
commencer, il n'est pas nécessaire de passer par tout cela pour obtenirN
indirectement ou valider celaN==N
. Quel est le cas d'utilisation réel que vous essayez de résoudre?Réponses:
Voilà
std::tuple_size<std::array>
.la source
std::size()
nécessite une instance du tableau.tuple_size
comme ça, si vous connaissez déjà la taille du tableau pour la passer dans le modèle. Ce serait peut-être un exemple plus significatif?using ArrayType = std::array<int, 5>; ... static_assert(std::tuple_size<ArrayType>::value == 5);