While going through some of the C++ concepts I stumbled upon std::is_base_of logic.
Googling around for logic produced the below code, but I am not able to understand it.
Could somebody explain me how it works?
template<typename D, typename B>
class IsDerivedFromHelper
{
class No { };
class Yes { No no[3]; };
static Yes Test( B* );
static No Test( ... );
public:
enum { Is = sizeof(Test(static_cast<D*>(0))) == sizeof(Yes) };
};
template <class C, class P>
bool IsDerivedFrom() {
return IsDerivedFromHelper<C, P>::Is;
}