Es gibt std::array<T, N>::size()
, aber es ist nicht statisch, daher ist eine Instanz von erforderlich std::array
. Gibt es eine Möglichkeit, den zurückgegebenen Wert (der der N
von ist std::array<T, N>
) abzurufen, ohne eine Instanz des Arrays erstellen zu müssen? Für ein normales Array hätte ich es verwenden können sizeof
, aber ich sehe keine Garantie sizeof(std::array<T, N>) == N * sizeof(T)
dafür.
9
N
ja, warum müssen Sie darum bittenarray
, es für Sie zu reproduzieren?sizeof(std::array<T, N>) == N * sizeof(T)
muss nicht wahr sein.N
.N
beginnen müssen, müssen Sie dies alles nicht durchlaufen, umN
indirekt zu werden oder dies zu validierenN==N
. Was ist der tatsächliche Anwendungsfall , den Sie lösen möchten?Antworten:
Es gibt
std::tuple_size<std::array>
.quelle
std::size()
erfordert eine Instanz des Arrays.tuple_size
, wenn Sie die Array-Größe bereits im Voraus kennen, um sie an die Vorlage zu übergeben. Vielleicht wäre dies ein aussagekräftigeres Beispiel?using ArrayType = std::array<int, 5>; ... static_assert(std::tuple_size<ArrayType>::value == 5);