La hay std::array<T, N>::size()
, pero no es estática, por lo que requiere una instancia de std::array
. ¿Hay alguna manera de obtener el valor que devuelve (que es el N
de std::array<T, N>
) sin tener que construir una instancia de la matriz? Para una matriz normal, podría haberlo usado sizeof
, pero no veo ninguna garantía de que sizeof(std::array<T, N>) == N * sizeof(T)
sea cierto.
9
N
, ¿por qué necesita pedirarray
que se lo reproduzca?sizeof(std::array<T, N>) == N * sizeof(T)
no tiene que ser cierto.N
.N
que comenzar, no hay necesidad de pasar por todo esto para obtenerN
indirectamente o validar esoN==N
. ¿Cuál es el caso de uso real que estás tratando de resolver?Respuestas:
Hay
std::tuple_size<std::array>
.fuente
std::size()
requiere una instancia de la matriz.tuple_size
así, si ya conoce el tamaño de la matriz por adelantado para pasarlo a la plantilla. Tal vez este sería un ejemplo más significativo?using ArrayType = std::array<int, 5>; ... static_assert(std::tuple_size<ArrayType>::value == 5);