Кратко:
Пакеты параметров функции позволяют функции принимать произвольное количество аргументов разного типа.
Синтаксис
template<typename... Args>
void function(Args... args) {
// ...
}
Пример кода
Пример 1: Функция с пакетом параметров
#include <iostream>
template<typename... Args>
void print(Args... args) {
(std::cout << ... << args) << std::endl; // Распаковка параметров пакета
}
int main() {
print(1, 2, 3); // Output: 123
print("Hello, ", "world!"); // Output: Hello, world!
print(1.5, 'A', "text"); // Output: 1.5Atext
return 0;
}
Пример 2: Рекурсивная распаковка пакетов параметров
#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;
}