おいおまいら、聞いてください

無駄に一時オブジェクトを生成する書き方の例として、
std::string s0, s1, s2, ..., sn;
s0 = s1 + s2 + ... + sn;
なんてのが例に挙げられることがあるが、例えば、
class My_string_l;/* 左辺値 */ class My_string_r; /* 右辺値 */
として、
My_string_r operator+(const My_string_l &, const My_string_l &);
My_string_r operator+(My_string_r &lhs, const My_string_l &rhs)
{/* lhs+=rhsの意味を持つ実装 */}
みたいにすれば、上の例の一時オブジェクトを一個に減らすことができるよな?

これを一般化してジェネリックに(stringをパラメータ化して)実装できたら面白いと思うがどうだろう。