创建 C 风格的数组表单参数包

问题描述

如何从参数包创建数组?

    template<typename T,typename... Tpack>
    void covert(Tpack ...pack){
        T *arr = new T[???]; //Todo: how to get Tpack size?
        // Todo: how to fill array?
    }

解决方法

你可能会这样做:

template<typename T,typename... Tpack>
void covert(Tpack ...pack){
    T *arr = new T[sizeof...(Tpack)]{pack...};
    // ...
    delete[] arr;
}

Demo

但你的功能很奇怪。 std::tuple 可能更合适,或者将输入参数更改为 std::initializer_list<T>std::array<T,N>