operatorset Unko {
 Matrix operator*(Matrix &a, Matrix &b) { return a.multiply(b); }
 Matrix operator+(...) {...}
 Child operator+(Chinko &c, Manko &m) { m.accept(c); return m.fire(); }
...
}

使う側:
using operatorset Unko;

Matrix a, b, c;
...;
c = a * b;

みたいな感じで、演算子の定義はあえてクラスにカプセル化しないとか、駄目?
既存クラスの不便さも解消出来るし、演算子の定義はクラスのカプセル化を壊さないし。
演算子の意味も、ライブラリに依存せずクライアントが自由に定義出来るし。
素人(俺)が馬鹿言ってたらごめんなさい。