24 #ifndef ARM_COMPUTE_MISC_CAST_H 25 #define ARM_COMPUTE_MISC_CAST_H 46 template <
typename Target,
typename Source>
49 if(dynamic_cast<Target>(v) ==
nullptr)
53 return static_cast<Target>(v);
67 template <
typename Target,
typename Source>
71 return static_cast<Target>(v);
86 template <
typename Target,
typename Source,
typename Deleter>
89 if(dynamic_cast<Target *>(v.get()) ==
nullptr)
93 auto r =
static_cast<Target *
>(v.release());
94 return std::unique_ptr<Target, Deleter>(r, std::move(v.get_deleter()));
109 template <
typename Target,
typename Source,
typename Deleter>
113 auto r =
static_cast<Target *
>(v.release());
114 return std::unique_ptr<Target, Deleter>(r, std::move(v.get_deleter()));
#define ARM_COMPUTE_ERROR_ON(cond)
If the condition is true then an error message is printed and an exception thrown.
Copyright (c) 2017-2021 Arm Limited.
Target polymorphic_downcast(Source *v)
Polymorphic down cast between two types.
std::unique_ptr< Target, Deleter > polymorphic_downcast_unique_ptr(std::unique_ptr< Source, Deleter > &&v)
Polymorphic down cast between two unique pointer types.
Target polymorphic_cast(Source *v)
Polymorphic cast between two types.
std::unique_ptr< Target, Deleter > polymorphic_cast_unique_ptr(std::unique_ptr< Source, Deleter > &&v)
Polymorphic cast between two unique pointer types.
#define ARM_COMPUTE_THROW(ex)