#include <stdio.h>
#include <typeinfo>
template <typename T, typename R>
class A
{
public:
virtual T cc() = 0;
A(){}
~A(){}
public:
T method()
{
T t = T();
R r = R();
printf( "class Anttypename R: %s nttypename T: %sn", typeid(t).name(), typeid(r).name() );
return t;
}
};
template <typename T, typename P = void>
class C : public A<T,P>
{
public:
C() {}
~C(){}
public:
T cc()
{
printf("ccn");
T t = this->method();
return t;
}
};
int main()
{
C<int, char> *c;
c = new C<int, char>();
int i = c->cc();
printf("i value: %dn", i);
return 0;
}