From 40d40facb966fc3a0d03bdb1f6f668caf1dedd4b Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Tue, 5 Jul 2016 21:27:21 +0200 Subject: [PATCH] allow implicit upcast of smart_ptr --- alib2std/src/extensions/memory.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/alib2std/src/extensions/memory.hpp b/alib2std/src/extensions/memory.hpp index 31c0f82664..da1fdd790d 100644 --- a/alib2std/src/extensions/memory.hpp +++ b/alib2std/src/extensions/memory.hpp @@ -270,12 +270,14 @@ public: explicit smart_ptr ( T * data ) : m_Data ( data ) { } + template < class R > + smart_ptr ( smart_ptr < R > other ) : m_Data ( other.release ( ) ) { + } + smart_ptr ( const smart_ptr < T > & other ) : m_Data ( std::clone ( other.m_Data ) ) { } - smart_ptr ( smart_ptr < T > && other ) noexcept { - m_Data = other.m_Data; - other.m_Data = NULL; + smart_ptr ( smart_ptr < T > && other ) noexcept : m_Data ( other.release ( ) ) { } ~smart_ptr ( ) noexcept { -- GitLab