fork download
  1. #include <iostream>
  2. #include <functional>
  3.  
  4. template <typename Arg1, typename Arg2, typename Cap1, typename Cap2>
  5. struct my_lambda : std::binary_function<Arg1, Arg2, void>
  6. {
  7. my_lambda(const Cap1& c1, const Cap2& c2) : cap1(c1), cap2(c2) {}
  8.  
  9. void operator()(const Arg1& arg1, const Arg2& arg2) const
  10. {
  11. // lambda body
  12. std::cout << (cap1 + cap2 + arg1 + arg2) << std::endl;
  13. }
  14.  
  15. mutable Cap1 cap1;
  16. mutable Cap2 cap2;
  17. };
  18.  
  19. template <typename Arg1, typename Arg2, typename Cap1, typename Cap2>
  20. my_lambda<Arg1, Arg2, Cap1, Cap2> lambda(const Cap1& c1, const Cap2& c2)
  21. {
  22. return my_lambda<Arg1, Arg2, Cap1, Cap2>(c1, c2);
  23. }
  24.  
  25. int main()
  26. {
  27. int i = 1, j = 2;
  28. lambda<int, int>(i, j)(3, 4);
  29. }
  30.  
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
10