Просмотр исходного кода

LibJS: Allow constructing a GCPtr from another GCPtr of convertible type

Matthew Olsson 2 лет назад
Родитель
Сommit
5094dcf615
1 измененных файлов с 12 добавлено и 1 удалено
  1. 12 1
      Userland/Libraries/LibJS/Heap/GCPtr.h

+ 12 - 1
Userland/Libraries/LibJS/Heap/GCPtr.h

@@ -100,6 +100,18 @@ public:
     {
     {
     }
     }
 
 
+    GCPtr(GCPtr<T> const& other)
+        : m_ptr(other.ptr())
+    {
+    }
+
+    template<typename U>
+    GCPtr(GCPtr<U> const& other)
+    requires(IsConvertible<U*, T*>)
+        : m_ptr(other.ptr())
+    {
+    }
+
     GCPtr(NonnullGCPtr<T> const& other)
     GCPtr(NonnullGCPtr<T> const& other)
         : m_ptr(other.ptr())
         : m_ptr(other.ptr())
     {
     {
@@ -117,7 +129,6 @@ public:
     {
     {
     }
     }
 
 
-    GCPtr(GCPtr const&) = default;
     GCPtr& operator=(GCPtr const&) = default;
     GCPtr& operator=(GCPtr const&) = default;
 
 
     template<typename U>
     template<typename U>