class parent{ public: template T parent::foo(){ return T; } }; class A : public parent{}; class B: public parent{}; int main(){ A a; a.foo(); }