@ Jarod42 хорошая мысль
я есть следующая функция, которая может принимать N аргументов разных типов и пересылать их N функциям, шаблонным для каждого отдельного типа, таким образом (пример с двумя аргументами):
template <typename T1, typename T2>
bool func(int& counter, T1 x1, T2 x2) {
switch (counter) {
case 0:
if (func2<T1>(x1)) {
counter++;
return true;
} else {
return false;
}
case 1:
if (func2<T2>(x2)) {
counter++;
return true;
} else {
return false;
}
default:
return true;
}
}
Я хочу написать эту функцию с переменными шаблонами, чтобы она могла обрабатывать любое количество аргументов безопасным для типов способом. Я вижу решение, использующее рекурсивные функции, передавая счетчик и переменный индекс и сравнивая их на равенство, но это может показаться гораздо менее эффективным кодом, чем приведенный выше оператор switch (последовательность проверок if по сравнению с таблицей переходов). ).
Можно ли сделать это эффективно с помощью шаблонного метапрограммирования или мне нужно обеспечить перегрузки для каждой арности?