fork download
  1. #include <iostream>
  2.  
  3. struct Noisy {
  4. Noisy() { std::cout << "Default construct" << std::endl; }
  5. Noisy(const Noisy&) { std::cout << "Copy construct" << std::endl; }
  6. Noisy(Noisy&&) { std::cout << "Move construct" << std::endl; }
  7. Noisy& operator=(const Noisy&) { std::cout << "Copy assignment" << std::endl; return *this; }
  8. Noisy& operator=(Noisy&&) { std::cout << "Move assignment" << std::endl; return *this; }
  9. ~Noisy() { std::cout << "Destructor" << std::endl; }
  10.  
  11. int& get() { return x; }
  12. int x = 5;
  13. };
  14.  
  15. void func(int& x) {
  16. std::cout << "----------" << std::endl;
  17. std::cout << x << std::endl;
  18. std::cout << "----------" << std::endl;
  19. }
  20.  
  21. int main() {
  22. std::cout << "func()" << std::endl;
  23. func(Noisy{}.get());
  24. std::cout << "Done" << std::endl;
  25. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
func()
Default construct
----------
5
----------
Destructor
Done