我對你的的dimensions
目的還不清楚,但我認爲這是你打算做什麼。
#include <iostream>
#include <array>
template<size_t N, size_t... M>
struct product_of
{
static constexpr size_t size = N * product_of<M...>::size;
};
template<size_t N>
struct product_of<N>
{
static constexpr size_t size = N;
};
template <class Type, size_t... sizes>
struct array_dimensional
{
static std::array<size_t, sizeof...(sizes)> dims;
std::array<Type, product_of<sizes...>::size> ar;
};
template<class Type, size_t... sizes>
std::array<size_t, sizeof...(sizes)> array_dimensional<Type,sizes...>::dims{sizes...};
int main()
{
array_dimensional<int, 2,3,4,5> ar;
std::cout << ar.dims.size() << '\n';
for (auto x : ar.dims)
std::cout << x << ' ';
std::cout << '\n';
std::cout << ar.ar.size() << '\n';
}
輸出
4
2 3 4 5
120
注意:您可以與通過乘法撕裂開sizes...
滴滴其重新組合的產物生成模板做到這一點我做了零個啓示零檢測也不溢出。無論如何,我希望它有幫助。
最佳運氣
寫一個遞歸乘法函數 – Hurkyl