fork download
  1. #include <iostream>
  2. #include <memory>
  3.  
  4.  
  5. //C++14
  6. std::unique_ptr<std::string> create_name()
  7. {
  8. //auto ptr = std::make_unique<std::string>("Testname");
  9. //return std::move(ptr);
  10.  
  11. //Компиль попробует вернуть через move конструктор/оператор присваивания.
  12. //Если оных нет, то вернёт через копирование, что сделать не выйдет.
  13. return std::make_unique<std::string>("Testname");
  14. }
  15.  
  16. //C++11
  17. using name_ptr = std::unique_ptr<std::string>;
  18. name_ptr create_name_2()
  19. {
  20. //auto ptr = ptr_string(new std::string("Testname"));
  21. //return std::move(ptr);
  22. //аналогично
  23. return name_ptr(new std::string("Testname"));
  24. }
  25.  
  26. int main()
  27. {
  28. auto name = create_name();
  29. std::cout<<*name<<std::endl;
  30.  
  31. name = create_name_2();
  32. std::cout<<*name<<std::endl;
  33. return 0;
  34. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
Testname
Testname