fork download
  1. #include <iostream>
  2. #include <functional>
  3.  
  4. using namespace std;
  5.  
  6. template<typename... T>
  7. void f(T... a)
  8. {
  9. std::initializer_list<int> {(std::cout<<a<<" ", 0)...};
  10. }
  11.  
  12. template<typename... T>
  13. class Defer
  14. {
  15. private:
  16. std::function<void()> func;
  17.  
  18. public:
  19. Defer(T... a) : func(std::bind(f<T...>, a...)) {}
  20. void call() {func();}
  21. };
  22.  
  23.  
  24.  
  25. int main()
  26. {
  27. Defer<int, float, int, const char*> d(1, 1.1, 2, "Hey");
  28. d.call();
  29. return 0;
  30. }
  31.  
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
1 1.1 2 Hey