fork download
  1. #include <iostream>
  2.  
  3. int function (int arg) { return arg; }
  4. typedef int (*function_t) (int arg);
  5.  
  6. template <typename T>
  7. class caller {};
  8.  
  9. template <typename T_ret, typename... T_args>
  10. class caller<T_ret(*)(T_args...)> {
  11. T_ret (*m_p) (T_args... args);
  12. public:
  13. T_ret call (T_args... args) {
  14. return m_p(args...);
  15. }
  16. caller (T_ret (*p)(T_args...args)) : m_p(p) {}
  17. };
  18.  
  19. int main()
  20. {
  21. caller<decltype(&function)> c(&function);
  22. std::cout << c.call(1) << std::endl;
  23. return 0;
  24. }
  25.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
1