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