diff --git a/src/Memory/__OptionalUniquePtr.hpp b/src/Memory/__OptionalUniquePtr.hpp index e77e296..4fe31ad 100644 --- a/src/Memory/__OptionalUniquePtr.hpp +++ b/src/Memory/__OptionalUniquePtr.hpp @@ -2,6 +2,7 @@ #define ARBUTILS_OPTIONALOptionalUniquePtr_HPP #include "../Ensure.hpp" +#include "../Misc.hpp" namespace ArbUt { /// @brief An optional unique pointer is used to indicate a pointer that is owned by its holder, and will be deleted @@ -17,21 +18,10 @@ namespace ArbUt { inline OptionalUniquePtr() : _raw(nullptr) {} /// @brief Initialise a OptionalUniquePtr with a specific raw pointer. inline OptionalUniquePtr(T* nullable ptr) : _raw(ptr){}; - /// @brief Initialise a OptionalUniquePtr from a copy. - inline OptionalUniquePtr(const OptionalUniquePtr& other) : _raw(other._raw){}; - /// @brief Initialise a OptionalUniquePtr with a std unique_ptr. - inline OptionalUniquePtr(const std::unique_ptr& other) : _raw(other.get()){}; + NO_COPY_OR_MOVE(OptionalUniquePtr) ~OptionalUniquePtr() noexcept { delete _raw; } - /// @brief Copy operator. - inline OptionalUniquePtr& operator=(const OptionalUniquePtr& rhs) { - if (this == &rhs) { - return *this; - } - _raw = rhs._raw; - return *this; - } /// @brief Return whether the pointer is null or not. [[nodiscard]] inline bool HasValue() const noexcept { return _raw != nullptr; } diff --git a/src/Memory/__UniquePtr.hpp b/src/Memory/__UniquePtr.hpp index 686d7eb..6062b0b 100644 --- a/src/Memory/__UniquePtr.hpp +++ b/src/Memory/__UniquePtr.hpp @@ -2,6 +2,7 @@ #define ARBUTILS___UNIQUEPTR_HPP #include "../Ensure.hpp" +#include "../Misc.hpp" namespace ArbUt { /// @brief A unique pointer is used to indicate a pointer that is owned by its holder, and will be deleted when its @@ -17,10 +18,7 @@ namespace ArbUt { inline UniquePtr() {} /// @brief Initialise a UniquePtr with a specific raw pointer. inline UniquePtr(T* non_null ptr) : _raw(ptr) { EnsureNotNull(ptr); }; - /// @brief Initialise a UniquePtr from a copy. - inline UniquePtr(const UniquePtr& other) : _raw(other._raw){}; - /// @brief Initialise a UniquePtr with a std unique_ptr. - inline UniquePtr(const std::unique_ptr& other) : _raw(other.get()){}; + NO_COPY_OR_MOVE(UniquePtr) #if !WINDOWS // This doesn't work on mingw-w64 for some reason UniquePtr(std::nullptr_t) = delete; @@ -28,16 +26,6 @@ namespace ArbUt { ~UniquePtr() noexcept { delete _raw; } - /// @brief Copy operator. - inline UniquePtr& operator=(const UniquePtr& rhs) { - if (this == &rhs) { - return *this; - } - delete _raw; - _raw = rhs._raw; - return *this; - } - /// @brief Assign operator with raw pointer. inline UniquePtr& operator=(T* non_null rhs) { if (_raw == rhs) {