3 template<class T> class Foo : public Base<T> {
8 printf("I'm Foo::A\n");
11 printf("I'm Foo::B\n");
13 virtual Base<T> *toBase() {
14 return static_cast<Base<T> *>(this);
16 static Foo<T> *fromBase(Base<T> *b) {
17 return dynamic_cast<Foo<T> *>(b);