Variadic template arguments unpacking

Max Strakhov monnoroch at gmail.com
Fri Jul 5 17:41:58 PDT 2013


Suppose, in c++ i've got a variadic template function F, and i 
want to convert all the arguments in some individual manner by 
function conv and pass all the converted arguments as a variadic 
list to another variadic template function G.
Then i just do the following:

template<typename T>
struct R;

template<typename T>
R<T>::Type conv(T&& val);

template<typename ... Args>
void F(Args&& ... args) {
     G(conv(std::forward<Args>(args))...);
}

Is there any way to do the same kind of thing in D? I couldn't 
find any unpacking operator or a library function to do so...
The problem is that i have to pass converted lits to a C-like 
variadic function, for example printf, so it would be like:

template<typename T>
struct R;

template<typename T>
R<T>::Type conv(T&& val);

template<typename ... Args>
void MyPrintf(const char * format, Args&& ... args) {
     printf(convFormat(format), conv(std::forward<Args>(args))...);
}

I hope, my point is clear enough.


More information about the Digitalmars-d-learn mailing list