template<class T>
class A {
protected: virtual void hage() = 0;
public: void hoge() { for (int i = 0; i < 10000000; ++i) static_cast<T*>(&this)->hage(); }
};

class B : public A<B>
{
protected: inline void hage() { ::GlobalCount++; };
}