Я подозреваю, что вы неправильно поняли значение подписи
void fct (int index, int indexes...)
Я подозреваю, что вы думаете, что fct()
ожидает единственное значение int
(index
) и список переменных int
(indexex...
) с расширением пакета параметров в стиле C ++ 11.
Нет: это то же самое, что
void fct (int index, int indexes, ...)
so два int
одиночные значения и необязательный аргумент в стиле C, который можно использовать только через va_list
stuff.
Если вы не верите этому, попробуйте вызвать fct()
только с целочисленным аргументом
fct(1);
Вы должны получить ошибку типа «error: нет подходящей функции для вызова функции fct» с примечанием типа «note: функция-кандидат недопустима: требуется как минимум 2 аргумента, но 1 был предоставлен» относительно переменной версия fct()
.
Если вы хотите получить переменный список параметров и рекурсивно передать его в ту же функцию, вы можете использовать шаблонный вариационный способ.
К примеру
template <typename ... Ts>
void fct(int index, Ts ... indexes)
{
std::cout << index << ' ';
fct(indexes...);
}