I have this macro:
#define DO_SOMETHING(N, a,b,c,...)
my goal is to write such macro that expands to:
DO_SOMETHING(1, a,b,c,...) DO_SOMETHING(2, a,b,c,...) DO_SOMETHING(3, a,b,c,...)
Here’s my approach:
#define REP_3(D, A) D(1, A) D(2, A) D(3, A)
#define GENERATE(a,b,c, ...) REP_3(DO_SOMETHING, (a,b,c,__VA_ARGS__))
however, this expands to:
DO_SOMETHING(1, (a,b,c,...)) DO_SOMETHING(2, (a,b,c,...)) DO_SOMETHING(3, (a,b,c,...))
Perhaps, I need something like:
REP_3(DO_SOMETHING2, (a,b,c,__VA_ARGS__))
#define DO_SOMETHING2(N, A) DO_SOMETHING(N, unroll(A)) //??
How can I unroll that list of args represented by A?