问题描述
如何从参数包创建数组?
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;
}
但你的功能很奇怪。
std::tuple
可能更合适,或者将输入参数更改为 std::initializer_list<T>
或 std::array<T,N>
。