капелюх чарiвника
Практическая польза от данного трюка определённо должна быть. Как придумаете, как его использовать — сообщайте.


//------------------------------------------------------------
#include
using namespace std;

class A {
public:
A() {
cout << "ctor A" << endl;
}
virtual void foo() {
cout << "foo A" << endl;
}
};

template
class B: public T {
public:
B(): T() {
cout << "ctor B<" << typeid(T).name() << ">" << endl;
}
virtual void foo() {
cout << "foo B<" << typeid(T).name() << ">" << endl;
}
};

int main() {

A * a = new B < B < B < B < B < A > > > > > ( );
a->foo();

return 0;
}
//------------------------------------------------------------


@темы: Трюки с наследованием, Трюки с шаблонами