How about this:
void foo(...)
{
foreach(arg; variadic(_arguments, _argptr))
{
if(arg.type == typeid(char[]))
{
char[] str;
arg.next(str);
printf("%.*s", str);
}
else if(arg.type == typeid(int))
{
int i;
arg.next(i);
printf("%d", i);
}
else
{
assert(0);
return;
}
}
}
http://www.dprogramming.com/docs/variadic/variadic.html