c++ - variadic template to call a function -


i trying write teamplate function looks this:

template<t funcptr, params...> void callfunction(params...) {     funcptr(params...); } 

example usage:

typedef void (__stdcall* test_t)(int a1, bool a2, char* a3); test_t fn = ....; //pointer obtained somehow  callfunction<fn>(10, true, "hello"); 

is possible? dont know how work parameter pack have unpacked each member of pack servers parameter.

i suggest minor rewrite this:

#include <iostream>  template<class fun, class... args> void callfunction(fun fun, args&&... args) {     fun(std::forward<args>(args)...); }  void fn(int a1, bool a2, char const* a3) {     std::cout << a1 << a2 << a3;     }  int main()  {     callfunction(fn, 10, true, "hello"); } 

live example. think can deduce proper ... syntax (after class... in paramter list, after arg... unpacking arguments @ call site.

the std::forward distinguish between lvalues , rvalues. it's better in general use argument deduction passing function pointer (or callable object in general) regular function argument, rather explicit template argument.


Comments

Popular posts from this blog

c# - How to get the current UAC mode -

postgresql - Lazarus + Postgres: incomplete startup packet -

javascript - Ajax jqXHR.status==0 fix error -