You appear to be trying to force the language/preprocessor system into doing something it wasn't designed to do. While you might be able to use variadic function templates, this inevitably adds complexity that perhaps you don't need.
If you explained the end goal of what you are trying to do, somebody might be able to offer a better design.
You have to know the type of every specified variadic function argument. That's why with printf() et al (which uses variadic functions) you have to specify exactly the type of each argument in the format string.