fork(3) 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(S&& rhs) { std::swap(name_, rhs.name_); name_ += " moved"; }
  9. };
  10.  
  11. void fn(S s)
  12. {
  13. std::cout << "fn(" << s.name_ << ")\n";
  14. }
  15.  
  16. template<typename T>
  17. void fwd_test(T&& t)
  18. {
  19. fn(std::forward<T>(t));
  20. fn(std::forward<T>(t));
  21. }
  22.  
  23. int main() {
  24. fwd_test(S("source"));
  25. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
fn(source moved)
fn(defaulted moved)