fork download
  1. #include <iostream>
  2.  
  3. struct foobar {
  4.  
  5. template<typename...Args>
  6. foobar(Args&&...){ std::cout << "variadic" << std::endl;}
  7.  
  8.  
  9. foobar() {std::cout << "ctor" << std::endl;}
  10. foobar(foobar& f) : foobar(static_cast<const foobar&>(f)) {}
  11. foobar(const foobar&) {std::cout << "copy" << std::endl;}
  12. foobar(foobar&&) {std::cout << "move" << std::endl;}
  13.  
  14. };
  15.  
  16. template <>
  17. foobar::foobar<foobar&>(foobar&) = delete;
  18.  
  19. template <>
  20. foobar::foobar<const foobar&>(const foobar&) = delete;
  21.  
  22. template <>
  23. foobar::foobar<foobar&&>(foobar&&) = delete;
  24.  
  25.  
  26. int main()
  27. {
  28. foobar f;
  29. foobar f1(1,2,3,4,5);
  30. foobar f2= f;
  31. foobar f5(f2);
  32. foobar f3(std::move(f1));
  33.  
  34. return 0;
  35. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
ctor
variadic
copy
copy
move