コピコン呼び出し最適化に頼らねばにっちもさっちも行かないシチュエーションは多々あるから
右辺値参照はマジ不完全
例えば
Foo operator+(const Foo& lhs, const Foo& rhs) {
 Foo x(lhs); // 馬鹿正直にやったらコピー1回
 x += rhs; // Foo& Foo::operator+=()が定義済みとする
 return x; // 馬鹿正直にやったらコピーがもう一回
}
みたいな、
とこの前思いました
※ 個人の感想です