fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. struct S {
  5. std::string name_ = "defaulted";
  6. S() = default;
  7. S(const char* name) : name_(name) {}
  8. S(const S& rhs) = default;
  9. S(S&& rhs) { std::swap(name_, rhs.name_); name_ += " moved"; }
  10. };
  11.  
  12. void fn(S s)
  13. {
  14. std::cout << "fn(" << s.name_ << ")\n";
  15. }
  16.  
  17. template<typename T>
  18. void fwd_test(T&& t)
  19. {
  20. fn(t);
  21. fn(std::forward<T>(t));
  22. }
  23.  
  24. int main() {
  25. fwd_test(S("source"));
  26. }
Success #stdin #stdout 0.01s 5308KB
stdin
Standard input is empty
stdout
fn(source)
fn(source moved)