Как обработать изменяемые по количеству типы данных внутри функции?
Собственно код ниже. Чувтсвую, что упускаю некоторую мелкую деталь.
template <typename T>
static void debug(int n, T ...)
{
if (DEBUGGING == true) {
va_list argptr;
va_start(argptr, n);
for (int i = 0; i < n; i++) {
qDebug() << "Debugging test: " << va_arg(argptr, T); //agr;
}
va_end(argptr);
}
}
Вызываю:
debug(8, 3, 2, 25.66, 66, 55, 77, 88, 99);
На выходе:
Debugging test: 2
Debugging test: 66
Debugging test: 55
Debugging test: 77
Debugging test: 88
Debugging test: 99
Debugging test: 0
Debugging test: -1217031457
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Вы смешали "французский с нижегородским" — вариативные шаблоны и функции с переменным числом аргументов....
Сделайте проще, например, так:
template <typename T>
void debug(T a)
{
cout << "Debugging test: " << a << endl;
}
template <typename T, typename... Ts>
void debug(T a, Ts... args)
{
debug(a);
debug(args...);
}
Свои if (DEBUGGING == true) и qDebug() добавьте по вкусу.
Как воспользоваться выражениями свертки в такой ситуации — это к гуру :)