Вариационный шаблон наверняка решит это:
#include <cstdio>
void function_a(int a) { printf("int %d\n", a); }
void function_b(double b) { printf("double %f\n", b); }
void select(int n) { function_a(n); }
void select(double d) { function_b(d); }
template <class T>
void variadic(T a)
{
select(a);
}
template <class T, class ...Args>
void variadic(T a, Args... args)
{
select(a);
variadic(args...);
}
int main()
{
variadic(1, 3, 2.1, 5.6, 0);
}
Но это доступно только в C ++ 0x.
Если вы имеете в виду переменные функции, как в var_args
, то эти аргументы не несут никакой информации о типах.