Search code examples
c++arraysparameter-pack

Create C-style array form parameter pack


How can I create an array from the parameter pack?

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

Solution

  • You might do:

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

    Demo

    but your function is strange as-is. std::tuple might be more appropriate, or change input parameter to std::initializer_list<T> or std::array<T, N>.