Jest std::array<T, N>::size()
, ale jest niestatyczna, więc wymaga wystąpienia std::array
. Czy istnieje sposób, aby uzyskać wartość powraca (który jest N
z std::array<T, N>
) bez konieczności konstruowania instancji tablicy? Do normalnej tablicy mógłbym użyćsizeof
, ale nie widzę żadnej gwarancji, że sizeof(std::array<T, N>) == N * sizeof(T)
to prawda.
9
N
, dlaczego musisz poprosićarray
o jego odtworzenie?sizeof(std::array<T, N>) == N * sizeof(T)
nie musi to być prawda.N
.N
zacząć, nie musisz przechodzić przez to wszystko, aby uzyskaćN
pośrednio lub zweryfikować toN==N
. Jaki jest rzeczywisty przypadek użycia , który próbujesz rozwiązać?Odpowiedzi:
Jest
std::tuple_size<std::array>
.źródło
std::size()
wymaga instancji tablicy.tuple_size
tego w ten sposób, jeśli znasz już rozmiar tablicy z góry, aby przekazać ją do szablonu. Może to byłby bardziej znaczący przykład?using ArrayType = std::array<int, 5>; ... static_assert(std::tuple_size<ArrayType>::value == 5);