/* * smart_pointer.h Smart pointer, given code. */ #ifndef SMARTPOINTER_H #define SMARTPOINTER_H namespace IDA_Smart_Pointer { class smart_pointer { public: smart_pointer(); explicit smart_pointer(int* p); smart_pointer(const smart_pointer& other); smart_pointer(smart_pointer&& other) noexcept; ~smart_pointer(); smart_pointer& operator=(const smart_pointer& rhs) &; smart_pointer& operator=(smart_pointer&& rhs) & noexcept; int& operator*(); int* operator->(); private: int* ptr_; void copy(const smart_pointer& p); }; } // namespace IDA_Smart_Pointer #endif