#include <initializer_list>
#include <vector>
#include <iostream>

template <typename T>
std::vector<T> makeArray (std::initializer_list<size_t> dims) {
    size_t size = 1;
    for (size_t d : dims) size *= d;
    return std::vector<T> (size);
}

int main () {
    std::vector<double> vec1 = makeArray<double> ({ 3, 5, 10});
    std::cout << vec1.size () << std::endl;

    std::vector<int> vec2 = makeArray<int> ({ 3 });
    std::cout << vec2.size () << std::endl;

}