Pointer type that wraps a shared view model pointer to provide implicit dynamic_cast style casting to any other view-model or extension. Implicit conversion is implemented through a proxy object so as to make the 'implicit' conversion somewhat explicit: FViewModelPtr ModelPtr = GetViewModel(); TSharedPtrDraggable = ModelPtr.ImplicitCast(); TSharedPtrDroppable = ModelPtr.ImplicitCast();