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)  | 
