#include <iostream>
using namespace std;
class Base{};
class Dri1: public Base{};
class Dri2: public Base{};
class Gra: public Dri1, Dri2{};
template <class I>
void print(I&, Base)
{
cout << "Using Base" <<endl;
return;
}
template <class I>
void print(I&, Dri1)
{
cout << "Using Dri1" << endl;
return;
}
template <class I>
void print(I&, Dri2)
{
cout << "Using Dri2" << endl;
return;
}
template <class I>
void print(I&, Gra)
{
cout << "Using Gra" << endl;
return;
}
int main()
{
int a = 8;
print(a, Base());
print(a, Dri1());
print(a, Dri2());
print(a, Gra());
return 0;
}
===========================================================================================================================================
Using Base
Using Dri1
Using Dri2
Using Gra