Index: src/desktop/view/View.hpp
--- src/desktop/view/View.hpp.orig
+++ src/desktop/view/View.hpp
@@ -30,7 +30,12 @@ namespace Desktop::View {
       protected:
         IView(SP<Desktop::View::CWLSurface> pWlSurface);
 
-        void                          initView(WP<IView> self, eViewType type);
+        template <typename T>
+        void initView(SP<T> self, eViewType type) {
+            initView(SP<IView>(self.impl_, static_cast<IView*>(self.get())), type);
+        }
+
+        void                          initView(SP<IView> self, eViewType type);
 
         SP<Desktop::View::CWLSurface> m_wlSurface;
 
