In C ++ 17:
std::array < float, (... * N_i)> arr;
In C ++ 14:
template<size_t... Ns>
constexpr size_t product(){
size_t p = 1;
for(auto n : { Ns... }) p *= n;
return p;
}
std::array< float, product<N_i...>()> arr;
In C ++ 11:
template<size_t... N_i>
struct product {
static const size_t value = 1;
};
template<size_t N_1, size_t... N_i>
struct product<N_1, N_i...> {
static const size_t value = N_1 * product<N_i...>::value;
};
std::array< float, product<N_i...>::value> arr;
Alternatively, you can use a recursive function constexpr.
source
share