diff options
Diffstat (limited to 'src/std')
-rw-r--r-- | src/std/memory.hpp | 12 | ||||
-rw-r--r-- | src/std/memory.tpp | 19 |
2 files changed, 9 insertions, 22 deletions
diff --git a/src/std/memory.hpp b/src/std/memory.hpp index 0c5719c..d1ca762 100644 --- a/src/std/memory.hpp +++ b/src/std/memory.hpp @@ -11,13 +11,19 @@ class UniquePtr public: explicit UniquePtr() = default; explicit UniquePtr(Target *target); - UniquePtr(const UniquePtr &unique_ptr); - UniquePtr(UniquePtr &&unique_ptr) noexcept; - UniquePtr &operator=(const UniquePtr &unique_ptr); + // Move constructor + UniquePtr(UniquePtr &&unique_ptr) noexcept; + // Move assignment operator UniquePtr &operator=(UniquePtr &&unique_ptr) noexcept; + // Disable the copy constructor + UniquePtr(const UniquePtr &unique_ptr) = delete; + + // Disable the copy assignment operator + UniquePtr &operator=(const UniquePtr &unique_ptr) = delete; + ~UniquePtr(); Target operator*() const; diff --git a/src/std/memory.tpp b/src/std/memory.tpp index fdfe72b..b2f39bf 100644 --- a/src/std/memory.tpp +++ b/src/std/memory.tpp @@ -27,12 +27,6 @@ UniquePtr<Target>::UniquePtr(Target *target) : _target(target) } template <class Target> -UniquePtr<Target>::UniquePtr(const UniquePtr &unique_ptr) - : _target(new Target(*(unique_ptr._target))) -{ -} - -template <class Target> UniquePtr<Target>::UniquePtr(UniquePtr &&unique_ptr) noexcept : _target(unique_ptr._target) { @@ -40,19 +34,6 @@ UniquePtr<Target>::UniquePtr(UniquePtr &&unique_ptr) noexcept } template <class Target> -UniquePtr<Target> &UniquePtr<Target>::operator=(const UniquePtr &unique_ptr) -{ - if (&unique_ptr != this) - { - delete _target; - _target = nullptr; - _target = new Target(*(unique_ptr._target)); - } - - return *this; -} - -template <class Target> UniquePtr<Target> &UniquePtr<Target>::operator=(UniquePtr &&unique_ptr) noexcept { if (&unique_ptr != this) |