template class parent_op { public: C parent::operator-(){ C ret; ret.asdf = reinterpret_case(this)->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; }