class parent{ public: int asdf; template T 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; }