fork download
  1. #include <utility>
  2. #include <tuple>
  3. #include <iostream>
  4.  
  5. struct A{
  6. A() {std::cout << "def-ctor\n";}
  7. A(const A&) {std::cout << "copy-ctor\n";}
  8. A(A&&) {std::cout << "move-ctor\n";}
  9. A&operator=(const A&) {std::cout << "copy-asgn\n"; return *this;}
  10. A&operator=(A&&) {std::cout << "move-asgn\n"; return *this;}
  11. ~A() {std::cout << "dtor\n";}
  12. };
  13.  
  14. std::tuple<A, A> func() {
  15. std::cout << "starting func\n";
  16. std::tuple<A, A> ret;
  17. std::cout << "returning from func\n";
  18. return ret;
  19. }
  20.  
  21. int main() {
  22. A one, two;
  23. std::cout << "entering func\n";
  24. std::tie(one, two) = func();
  25. std::cout << "test complete\n";
  26. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
def-ctor
def-ctor
entering func
starting func
def-ctor
def-ctor
returning from func
move-asgn
move-asgn
dtor
dtor
test complete
dtor
dtor