10 #ifndef INCLUDED_O3TL_UNSAFE_DOWNCAST_HXX
11 #define INCLUDED_O3TL_UNSAFE_DOWNCAST_HXX
14 #include <type_traits>
21 template <
typename DerivedPtr,
typename BasePtr>
24 DerivedPtr> && std::is_pointer_v<BasePtr> && std::is_base_of_v<std::remove_pointer_t<BasePtr>, std::remove_pointer_t<DerivedPtr>>),
28 assert(p ==
nullptr || dynamic_cast<DerivedPtr>(p) !=
nullptr);
29 return static_cast<DerivedPtr
>(p);
std::enable_if_t< (std::is_pointer_v< DerivedPtr > &&std::is_pointer_v< BasePtr > &&std::is_base_of_v< std::remove_pointer_t< BasePtr >, std::remove_pointer_t< DerivedPtr >>), DerivedPtr > unsafe_downcast(BasePtr p)
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)