fork download
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. class my_auto_ptr
  5. {
  6. my_auto_ptr() = delete;
  7. my_auto_ptr(my_auto_ptr& rhs) = delete;
  8. my_auto_ptr& operator=(my_auto_ptr& rhs) = delete;
  9.  
  10. T* pt;
  11.  
  12. public:
  13. my_auto_ptr(T* p) { pt = p; }
  14. ~my_auto_ptr() { delete pt; }
  15.  
  16. T& operator*() { return *pt; }
  17. const T& operator*() const { return *pt; };
  18.  
  19. T* operator->() { return pt; }
  20. const T*& operator->() const { return pt; };
  21. };
  22.  
  23. int main()
  24. {
  25. my_auto_ptr<int> pi { new int(42) };
  26.  
  27. *pi = 42;
  28.  
  29. std::cout << *pi << '\n';
  30. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
42