Well,
MS says variadic macros are supported from VS2005. 

I've tested other variadic macros and they're working fine, except this one. I've tested this on gcc as well with similar results. 

The problem seems to be in substitution of PP_RSEQ_N() macro in PP_NARG. If I write all the values from 63 to 0 instead of PP_RSEQ_N, then it will compile fine, but then the number of arguments always evaluates to 1.

I've tested this with VS2005 and VS2008.