このページはC++11に採用された言語機能の変更を解説しています。 のちのC++規格でさらに変更される場合があるため関連項目を参照してください。 概要 ムーブセマンティクスはコピーコストの削減を主な目的としており、また所有権の移動を実現する。 右辺値参照はムーブ元のオブジェクト(右辺値)を束縛するための言語機能である。 右辺値(Rvalues)と左辺値(Lvalues)について 誤解を恐れずに言えば、右辺値とは名前をもたない一時的なオブジェクトである。 また、左辺値とは明示的に実態のある名前付きオブジェクトである。 struct Foo{} ; int f() { return 0 ; } int main() { int i = 0; i; // 名前付きオブジェクトは左辺値 0; // リテラル値は右辺値 Foo x ; x; // 名前付きオブジェクトは左辺値 Foo(); // コ