Как обработать изменяемые по количеству типы данных внутри функции?

Собственно код ниже. Чувтсвую, что упускаю некоторую мелкую деталь.

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() добавьте по вкусу.

Как воспользоваться выражениями свертки в такой ситуации — это к гуру :)

→ Ссылка