Index: uspace/lib/cpp/include/internal/memory/shared_ptr.hpp
===================================================================
--- uspace/lib/cpp/include/internal/memory/shared_ptr.hpp	(revision edd2e61784c2460eb30ab887f993419c0871bd89)
+++ uspace/lib/cpp/include/internal/memory/shared_ptr.hpp	(revision 892118858c0b69e5d5b08eafae0add5eb2d53c3f)
@@ -35,4 +35,5 @@
 #include <internal/memory/allocator_arg.hpp>
 #include <internal/memory/shared_payload.hpp>
+#include <internal/trycatch.hpp>
 #include <type_traits>
 
@@ -194,8 +195,14 @@
                 enable_if_t<is_convertible_v<U*, element_type*>>* = nullptr
             )
+                : payload_{}, data_{}
             {
                 if (other.expired())
                     throw bad_weak_ptr{};
-                // TODO:
+
+                if (other.payload_)
+                {
+                    payload_ = other.payload_->lock();
+                    data_ = payload_->get();
+                }
             }
 
