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