From 6fb839489010ddea446b14e2fd2c6e619201acd1 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Wed, 21 Nov 2018 17:02:54 +0100
Subject: [PATCH] fix reference wrapper extension

---
 alib2std/src/extensions/functional.hpp | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/alib2std/src/extensions/functional.hpp b/alib2std/src/extensions/functional.hpp
index 992f227f80..d25aa9cb48 100644
--- a/alib2std/src/extensions/functional.hpp
+++ b/alib2std/src/extensions/functional.hpp
@@ -79,30 +79,22 @@ public:
 
 #ifndef __clang__
 
-	/**
-	 * Default constructor needed by g++ since it is not inherited.
-	 */
-	reference_wrapper ( ) = default;
-
 	/**
 	 * Copy constructor needed by g++ since it is not inherited.
 	 */
 	reference_wrapper ( const reference_wrapper & other ) = default;
 
-	/**
-	 * Move constructor needed by g++ since it is not inherited.
-	 */
-	reference_wrapper ( reference_wrapper && other ) = default;
-
 	/**
 	 * Copy operator = needed by g++ since it is not inherited.
 	 */
-	reference_wrapper & operator = ( reference_wrapper && other ) = default;
+	reference_wrapper & operator = ( const reference_wrapper & other ) = default;
 
 	/**
-	 * Move operator = needed by g++ since it is not inherited.
+	 * Overload to allow wrapping object in assignment.
 	 */
-	reference_wrapper & operator = ( const reference_wrapper & other ) = default;
+	reference_wrapper & operator = ( T & object ) {
+		return * this = reference_wrapper < T > ( object );
+	}
 #endif
 
 	/**
-- 
GitLab