fork(1) download
  1. #include <iostream>
  2. #include <list>
  3. #include <memory>
  4.  
  5. using Ptr = std::unique_ptr<int>;
  6.  
  7. Ptr f(bool arg) {
  8. std::list<Ptr> list;
  9. Ptr ptr(new int(1));
  10. list.push_back(std::move(ptr));
  11.  
  12. if (arg) {
  13. Ptr&& obj1 = std::move(list.front());
  14. std::cout << obj1.get() << std::endl << list.front().get() << std::endl;
  15. list.pop_front();
  16. return std::move(obj1);
  17. }
  18. else {
  19. Ptr obj2 = std::move(list.front());
  20. std::cout << obj2.get() << std::endl << list.front().get() << std::endl;
  21. list.pop_front();
  22. return obj2;
  23. }
  24. };
  25.  
  26. int main() {
  27. Ptr&& ptr1 = f(true);
  28. Ptr&& ptr2 = f(false);
  29.  
  30. std::cout << !!ptr1 << std::endl << !!ptr2 << std::endl;
  31.  
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
0x9527008
0x9527008
0x9527018
0
0
1