Ada std::array<T, N>::size()
, tapi ini non-statis, jadi itu membutuhkan contoh std::array
. Apakah ada cara untuk mendapatkan nilai yang dikembalikan (yang merupakan N
dari std::array<T, N>
) tanpa harus membuat turunan dari array? Untuk array normal, saya bisa menggunakan sizeof
, tetapi saya melihat tidak ada jaminan itu sizeof(std::array<T, N>) == N * sizeof(T)
benar.
9
N
, mengapa Anda perlu memintaarray
untuk memperbanyakinya untuk Anda?sizeof(std::array<T, N>) == N * sizeof(T)
tidak harus benar.N
.N
mulai dengan, tidak perlu melalui semua ini untuk mendapatkanN
secara tidak langsung, atau untuk memvalidasi ituN==N
. Apa use case aktual yang Anda coba selesaikan?Jawaban:
Ada
std::tuple_size<std::array>
.sumber
std::size()
membutuhkan instance array.tuple_size
seperti ini, jika Anda sudah tahu ukuran array di depan untuk meneruskannya ke template. Mungkin ini akan menjadi contoh yang lebih bermakna?using ArrayType = std::array<int, 5>; ... static_assert(std::tuple_size<ArrayType>::value == 5);