fork download
  1. #include <functional>
  2. #include <memory>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. struct Data {
  8. int some_data;
  9. shared_ptr<unique_ptr<Data>> mdata;
  10.  
  11. Data() {
  12. unique_ptr<Data> udata(this);
  13. mdata = make_shared<unique_ptr<Data>>(std::move(udata));
  14. }
  15.  
  16. ~Data() {
  17. mdata->release();
  18. }
  19.  
  20. };
  21.  
  22. struct Yoba {
  23. shared_ptr<unique_ptr<Data>> mdata;
  24. };
  25.  
  26.  
  27. int main(void) {
  28. Yoba yoba;
  29. {
  30. Data data;
  31. yoba.mdata = data.mdata;
  32. std::cout << yoba.mdata->get() << std::endl;
  33. }
  34. std::cout << yoba.mdata->get() << std::endl;
  35. return 0;
  36. }
Success #stdin #stdout 0s 4284KB
stdin
Standard input is empty
stdout
0x7fff21e61f20
0