fork(2) download
  1. #include <iostream>
  2. #include <functional>
  3. using namespace std;
  4.  
  5. template <class TR = void, class ... Types>
  6. struct GenericFunc
  7. #ifndef SWIG
  8. : std::function<TR (Types...)>
  9. #endif
  10. {
  11. GenericFunc() {}
  12.  
  13. #ifndef SWIG
  14. GenericFunc(const std::function<TR (Types... t)> & Action) : std::function<TR (Types... t)>(Action) {}
  15. #endif
  16. virtual TR OnAction(Types ... result) {
  17. if(*this) {
  18. return (*this)(result...);
  19. }
  20. }
  21. virtual ~GenericFunc(){}
  22. };
  23.  
  24. template<class... Types>
  25. using GenericAction = GenericFunc<void, Types...>;
  26.  
  27. typedef GenericAction<int> iAction;
  28.  
  29. int main() {
  30. iAction ia;
  31. iAction ia2([&](int i) {std::cout << i << endl;});
  32. ia.OnAction(1);
  33. ia2.OnAction(2);
  34. return 0;
  35. }
Success #stdin #stdout 0s 3276KB
stdin
Standard input is empty
stdout
2