派生クラスに対して、
派生クラスのインスタンスを被演算数とするオペレータを
定義することを義務付けるような基底クラスというのは
どのように書けばいいのでしょうか…。

template <class T>
class hoge{
public:
  virtual T& operator+=(T&) = 0;
};

こんな感じに書くしかないのでしょうか。

また、この基底クラスの仮想オペレータを呼び出すことで、
継承クラス先のオペレータの処理を抽象化しながら、
何らかの処理をするクラスを作りたいのですが、

template <class T>
class piyo{
public:
  void excute(hoge<T>* phoge){}
};

のように書いても、リンク時に外部シンボルが参照できないという
エラーが出てしまいます。
どう書けば、基底クラスのインターフェイスだけで、
派生クラスごとのオペレータを呼び出せるのでしょうか…。