Index: uspace/lib/cpp/include/__bits/thread/future_common.hpp
===================================================================
--- uspace/lib/cpp/include/__bits/thread/future_common.hpp	(revision 8660ad047720d7058d5b604aef48605579de7329)
+++ uspace/lib/cpp/include/__bits/thread/future_common.hpp	(revision 1621f912a7b16a6912da5eab9cd148d657830c6b)
@@ -105,5 +105,5 @@
 
         template<class T>
-        struct future_return: aux::type_is<const T&>
+        struct future_return: aux::type_is<T>
         { /* DUMMY BODY */ };
 
@@ -112,10 +112,21 @@
         { /* DUMMY BODY */ };
 
-        template<>
-        struct future_return<void>: aux::type_is<void>
+        template<class T>
+        using future_return_t = typename future_return<T>::type;
+
+        template<class T>
+        struct future_return_shared: aux::type_is<const T&>
         { /* DUMMY BODY */ };
 
         template<class T>
-        using future_return_t = typename future_return<T>::type;
+        struct future_return_shared<T&>: aux::type_is<T&>
+        { /* DUMMY BODY */ };
+
+        template<>
+        struct future_return_shared<void>: aux::type_is<void>
+        { /* DUMMY BODY */ };
+
+        template<class T>
+        using future_return_shared_t = typename future_return_shared<T>::type;
     }
 }
Index: uspace/lib/cpp/include/__bits/thread/shared_future.hpp
===================================================================
--- uspace/lib/cpp/include/__bits/thread/shared_future.hpp	(revision 8660ad047720d7058d5b604aef48605579de7329)
+++ uspace/lib/cpp/include/__bits/thread/shared_future.hpp	(revision 1621f912a7b16a6912da5eab9cd148d657830c6b)
@@ -70,5 +70,5 @@
             shared_future& operator=(shared_future&&) noexcept = default;
 
-            aux::future_return_t<R> get() const
+            aux::future_return_shared_t<R> get() const
             {
                 assert(this->state_);
