auto_ptr終了のおしらせ で「右辺値参照」てコトバが出てきたのでちょろっと解説。
えとます右辺値(R-value)とは代入式 x = y の右辺にある値のコト。
特に左辺に置くことのできないもんを指します。
たとえばリテラル。 1 = xxx; とか "hello" = yyy とか無理ですから。
それと関数の戻り値(ただし参照を除く)。
C++0Xで導入された右辺値参照(R-value reference)ゆーのはですね、
コピーにかかる時間/空間コストを抑えるのが目的です。
たとえば行列を表現するクラスこしらえたとしますな:
template<typename T> class matrix { ... }
matrix<double> x(2,2); // 2x2の正方行列
matrix<double> y(2,2);
matrix<double> z(2,2);
...
z = x + y;
さてこのとき行列の足し算: operator+(const matrix<T>& x, const matorix<T>& y)
の戻り値は matrix<double> です。これは変数ではなく値なので右辺値。x+y = z は無理ですから。
次数が2x2程度ならまだいいけど100x100ともなると時間/空間コストがバカになりません。
で、こんなのを代入するわけです。代入時に右辺から左辺にがっさりコピーすることになります。
挙句、右辺つまり関数の戻り値は代入後にあっけなく捨てられます。MOTTAINAIです。
右辺値参照およびムーブ・セマンティクス(move-semantics)てぇのは
「どうせすぐ捨てられる運命なら(ナカミぶっ壊れても構わんのだから)まるっといただいちゃうぜ」
ってことができる機能。要はcopyでなくmove(移動)を許そう、と。
作ったもんをコピーすんじゃなくてその場で消費しちまえ、と。
右辺地産地消てーことです。
詳しくはアキラくんとこ読んでね(ズボラー)