fork download
  1. #include <functional>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. class A
  6. {
  7. public:
  8. A() = delete;
  9. A(int i)
  10. : my_i(i), whoAmI([this]()->void { std::cout << "I am class A with i=" << this->my_i << std::endl; })
  11. {
  12. }
  13. A(const A&) = delete;
  14. A(A&& a)
  15. {
  16. this->my_i = a.my_i;
  17. this->whoAmI = [this]()->void { std::cout << "I am class A with i=" << this->my_i << std::endl; };
  18. };
  19. int my_i;
  20. std::function<void()> whoAmI;
  21. };
  22.  
  23. int main()
  24. {
  25. std::vector<A> vec;
  26. std::cout << "Initialization:" << std::endl;
  27. for (int i = 0; i<3; ++i)
  28. {
  29. vec.push_back(A(i));
  30. vec.back().whoAmI();
  31. }
  32. std::cout << "Retrieval:" << std::endl;
  33. for (int i = 0; i<3; ++i)
  34. vec.at(i).whoAmI();
  35. }
Success #stdin #stdout 0.03s 3876KB
stdin
Standard input is empty
stdout
Initialization:
I am class A with i=0
I am class A with i=1
I am class A with i=2
Retrieval:
I am class A with i=0
I am class A with i=1
I am class A with i=2