Pointer to variadic template static function. How?

c++, c++11, function-pointers, variadic-templates

Solution

Is it possible to create a pointer to `testFunc`?

The declaration of `testFunc` defines a family of functions, parameterized by `Args`. Each of those functions will have its own memory address. So you can only have a pointer to a particular one of the functions defined by `testFunc`, such as `testFunc<int, double>` or `testFunc<>`.

Instead of writing the following to get a pointer to the 0-argument overload of `testFunc`

void(*pFunc)() = &Factory::testFunc;

you should be writing

void(*pFunc)() = &Factory::testFunc<>;

because `Factory::testFunc` without the `<>` is an overload set, not a function.

Problem

I have a code: ``` class Factory { public: template<typename ...Args> static void testFunc(Args&& ...args) { cout << "inside function"; } }; ``` Is it possible to create a pointer to testFunc? All I can do is to define it like this: ``` // main void(*pFunc)() = &Factory::testFunc; pFunc(); ``` This works, but I can't pass variable number of arguments, like this: ``` void(*pFunc)(WHAT_TO_TYPE_HERE?) = &Factory::testFunc; pFunc(10, false, 'a', 11.5); ``` P.S.: with ellipsis (...) everythings works.

Original source