Как получить тип первого аргумента из Parameter pack?
вот функция
template<class... Args>
void f(Args... args) {
std::array<int, sizeof...(args)> test = {args...};
}
я хочу чтоб массив имел тип первого аргумента из параметр пак. Как мне получить этот тип?
Ответы (1 шт):
Автор решения: Chorkov
→ Ссылка
Если в списке аргументов должно быть не менее одного (аргумента), то первый аргумент можно вынести в отдельный параметр шаблона:
template<class Arg0, class... Args>
void f(Arg0 arg0, Args... args) {
std::array<Arg0, 1+ sizeof...(args)> test = {arg0, args...};
}
Если список аргументов разрывать не хочется, (например, если он используется в большем числе мест в функции), можно воспользоваться tuple_element:
template<class... Args>
void f(Args... args) {
typedef typename std::tuple_element< 0, std::tuple<Args...> >::type Arg0;
std::array<Arg0, sizeof...(args)> test = {args...};
}