Кратко

Рекурсивная обработка пакета вариативного шаблона используется для обработки каждого элемента пакета параметров по отдельности. Это достигается путем определения базового случая и рекурсивного вызова, который уменьшает размер пакета параметров на один элемент до тех пор, пока не будет достигнут базовый случай.

Синтаксис

template<typename T, typename... Args>
void function(T first, Args... args) {
    // Обработка первого параметра
    function(args...); // Рекурсивный вызов с оставшимися параметрами
}
 
void function() {
    // Базовый случай: ничего не делать
}

Пример кода

Пример 1: Рекурсивная функция печати

#include <iostream>
 
void print() {
    std::cout << std::endl; // Базовый случай: просто вывести конец строки
}
 
template<typename T, typename... Args>
void print(T first, Args... args) {
    std::cout << first << " "; // Обработка первого параметра
    print(args...); // Рекурсивный вызов для обработки оставшихся параметров
}
 
int main() {
    print(1, 2, 3);             // Output: 1 2 3 
    print("Hello,", "world!");  // Output: Hello, world! 
    print(1.5, 'A', "text");    // Output: 1.5 A text 
 
    return 0;
}