Есть std::array<T, N>::size()
, но это не статично, поэтому требуется экземпляр std::array
. Есть ли способ получить значение, которое он возвращает (который является N
из std::array<T, N>
) без необходимости создания экземпляра массива? Для обычного массива я мог бы использовать sizeof
, но не вижу никакой гарантии, что sizeof(std::array<T, N>) == N * sizeof(T)
это правда.
9
N
, почему вы должны попроситьarray
воспроизвести это для вас?sizeof(std::array<T, N>) == N * sizeof(T)
что не должно быть правдой.N
.N
начать, нет необходимости проходить через все это, чтобы получитьN
косвенные данные или подтвердить этоN==N
. Какой конкретный вариант использования вы пытаетесь решить?Ответы:
Там же
std::tuple_size<std::array>
.источник
std::size()
требуется экземпляр массива.tuple_size
, если вы уже знаете размер массива заранее, чтобы передать его в шаблон. Может быть, это был бы более значимый пример?using ArrayType = std::array<int, 5>; ... static_assert(std::tuple_size<ArrayType>::value == 5);