In C++11 we can write: template<class... Args> void somefunc(Args... args { ... } template<class T> T process(T p) { ... } template <class... Args> void foo(Args... args) { somefunc(process(args)...); } Is there a simple way to do this in D?