Blame tests/run/cpp_template_subclasses_helper.h
|
Packit |
562c7a |
using namespace std;
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
class Base {
|
|
Packit |
562c7a |
public:
|
|
Packit |
562c7a |
virtual const char* name() { return "Base"; }
|
|
Packit |
562c7a |
virtual ~Base() {}
|
|
Packit |
562c7a |
};
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
template <class A1>
|
|
Packit |
562c7a |
class A : public Base {
|
|
Packit |
562c7a |
public:
|
|
Packit |
562c7a |
virtual const char* name() { return "A"; }
|
|
Packit |
562c7a |
A1 funcA(A1 x) { return x; }
|
|
Packit |
562c7a |
};
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
template <class B1, class B2>
|
|
Packit |
562c7a |
class B : public A<B2> {
|
|
Packit |
562c7a |
public:
|
|
Packit |
562c7a |
virtual const char* name() { return "B"; }
|
|
Packit |
562c7a |
pair<B1, B2> funcB(B1 x, B2 y) { return pair<B1, B2>(x, y); }
|
|
Packit |
562c7a |
};
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
template <class C1>
|
|
Packit |
562c7a |
class C : public B<long, C1> {
|
|
Packit |
562c7a |
public:
|
|
Packit |
562c7a |
virtual const char* name() { return "C"; }
|
|
Packit |
562c7a |
C1 funcC(C1 x) { return x; }
|
|
Packit |
562c7a |
};
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
template <class D1>
|
|
Packit |
562c7a |
class D : public C<pair<D1, D1> > {
|
|
Packit |
562c7a |
virtual const char* name() { return "D"; }
|
|
Packit |
562c7a |
};
|
|
Packit |
562c7a |
|
|
Packit |
562c7a |
class E : public D<double> {
|
|
Packit |
562c7a |
virtual const char* name() { return "E"; }
|
|
Packit |
562c7a |
};
|