diff options
Diffstat (limited to 'include/cru/common/ClonablePtr.hpp')
-rw-r--r-- | include/cru/common/ClonablePtr.hpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/cru/common/ClonablePtr.hpp b/include/cru/common/ClonablePtr.hpp index 47a1d3bd..5e4b80c9 100644 --- a/include/cru/common/ClonablePtr.hpp +++ b/include/cru/common/ClonablePtr.hpp @@ -8,13 +8,16 @@ namespace cru { template <typename TClonable> class ClonablePtr { + template <typename T> + friend class ClonablePtr; + public: using element_type = typename std::unique_ptr<TClonable>::element_type; using pointer = typename std::unique_ptr<TClonable>::pointer; ClonablePtr() = default; ClonablePtr(std::nullptr_t) noexcept : ptr_(nullptr) {} - ClonablePtr(pointer p) noexcept : ptr_(p) {} + explicit ClonablePtr(pointer p) noexcept : ptr_(p) {} ClonablePtr(std::unique_ptr<element_type>&& p) noexcept : ptr_(std::move(p)) {} template <typename O, @@ -52,7 +55,7 @@ class ClonablePtr { } ClonablePtr& operator=(const ClonablePtr& other) { if (this != &other) { - ptr_ = std::unique_ptr<element_type>(other.ptr->Clone()); + ptr_ = std::unique_ptr<element_type>(other.ptr_->Clone()); } return *this; } |