Hardvariadicparameter-packs
Что такое variadic templates и parameter packs?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Variadic templates (C++11) — шаблоны с переменным числом параметров. typename... Args — parameter pack; sizeof...(Args) даёт количество.
// Рекурсивная обработка: базовый случай + рекурсия
void f() {} // базовый случай
template<typename T, typename... Args>
void f(T first, Args... rest) {
process(first);
f(rest...); // распаковка rest
}
// C++17 fold expression проще:
template<typename... Args>
void print_all(Args... a) { (std::cout << ... << a); }Распаковка через pattern f(args...). Лежит в основе std::make_unique, std::tuple, std::function, emplace. Runtime overhead нет — компилятор разворачивает рекурсию.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.