template class parent { public: int asdf; C parent::operator-(){ T ret; ret.asdf *= -1; return ret; } }; class A : public parent {}; class B: public parent {}; int main(){ A a; a.asdf = 2; A b = -a; }