The intention is to detect whether the Template type parameter D is derived from Template type parameter B. The below code has private static methods in the class IsDerivedHelper. The question is How does the static method inside the Helper class works? It doesn't have a definition in it.
#include<iostream>
#include<type_traits>
using namespace std;
class IOne
{
private:
public:
    IOne() = delete;
    virtual void print() = 0;
};
class One :public IOne
{
public:
    One() = default;
    virtual void print()
    {
        cout << "printed from class One" << endl;
    }
};
class Two
{
};
template<typename D, typename B> class IsDerivedHelper
{
    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) };
};
void main()
{
    auto v = IsDerivedHelper<One, IOne>::Is;    // Value is 1
    // auto v = IsDerivedHelper<Two, IOne>::Is; // Value is 0
    if (v)
    {
        cout << "Is derived" << endl;
    }
    else 
    {
        cout << "Not a derived." << endl;
    }
}
Thanks in advance.
 
    