fork download
  1. #include <iostream>
  2. #include <functional>
  3.  
  4. std::function<int(int)> gen_fun(int n) {
  5. return [&n](int x) { return x*n; };
  6. }
  7.  
  8. std::function<int(int)> right_gen_fun(const int &n) {
  9. return [&n](int x) { return x*n; };
  10. }
  11.  
  12. void TestDefault() {
  13. std::function<int(int)> f = gen_fun(5);
  14. std::cout << f(1) << std::endl;
  15. std::cout << f(2) << std::endl;
  16. std::cout << f(3) << std::endl;
  17. }
  18.  
  19. void TestRight() {
  20. std::function<int(int)> f = right_gen_fun(5);
  21. int value = 0;
  22. std::cout << f(++value) << std::endl;
  23. std::cout << f(++value) << std::endl;
  24. std::cout << f(++value) << std::endl;
  25. }
  26.  
  27. int main() {
  28. TestDefault();
  29. TestRight();
  30. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
5
10
15
5
10
15