C++0x 右辺値参照の使い道

右辺値参照は主に大きいオブジェクトを戻り値にするときに使う

vector<int> foo()
{
    vector<int> v;

    ...

    return v;
}

int main()
{
    vector<int>&& v = foo();

    return 0;
}


だが、実際はライブラリ(クラス)の中で右辺値参照を処理することが多いだろう


右辺値参照の追加にともない、標準ライブラリは総書き換えされるので
vectorのコピーコンストラクタと=演算子は以下のようになる

template <class T, class Allocator=std::allocator<T>>
class vector {
public:
    vector(const vector&);
    vector(vector&&);

    vector& operator=(const vector&);
    vector& operator=(vector&&);
};


なので、vectorを使う側はとくに右辺値参照を気にしなくていい

vector<int> v = foo();


右辺値参照・ムーブセマンティクス

C++0x言語拡張まとめ