Existe std::array<T, N>::size()
, mas não é estático, por isso requer uma instância de std::array
. Existe uma maneira de obter o valor que ele retorna (que é o N
de std::array<T, N>
) sem ter que construir uma instância da matriz? Para uma matriz normal, eu poderia ter usado sizeof
, mas não vejo garantia de que isso sizeof(std::array<T, N>) == N * sizeof(T)
seja verdade.
9
N
, por que precisa pedirarray
para reproduzi-lo para você?sizeof(std::array<T, N>) == N * sizeof(T)
não precisa ser verdade.N
.N
que começar, não há necessidade de passar por tudo isso para obterN
indiretamente ou validar issoN==N
. Qual é o caso de uso real que você está tentando resolver?Respostas:
Está aí
std::tuple_size<std::array>
.fonte
std::size()
requer uma instância da matriz.tuple_size
lo assim, se você já conhece o tamanho da matriz antecipadamente para passá-lo ao modelo. Talvez este seja um exemplo mais significativo?using ArrayType = std::array<int, 5>; ... static_assert(std::tuple_size<ArrayType>::value == 5);