fork download
  1. #include <functional>
  2. #include <iostream>
  3.  
  4. template <typename VAL, typename RET, typename ...ARGS>
  5. struct wrapper_helper
  6. {
  7. static std::function<RET(ARGS...)> wrapper(VAL v)
  8. {
  9. return [&](ARGS...args) -> RET { return v(args...); };
  10. }
  11. };
  12.  
  13. template <typename VAL, typename ...ARGS>
  14. struct wrapper_helper<VAL,void,ARGS...>
  15. {
  16. static std::function<void(ARGS...)> wrapper(VAL v)
  17. {
  18. return [&](ARGS...args) -> void { v(args...); };
  19. }
  20. };
  21.  
  22. void print_n(int n){
  23. std::cout << n << std::endl;
  24. }
  25.  
  26. int main()
  27. {
  28. wrapper_helper<void(int),void,int>::wrapper(print_n)(10);
  29. return 0;
  30. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
10