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