C++0x 右辺値参照 オーバーロードを実験
(左辺値)参照と右辺値参照はオーバーロードできるが
オーバーロードせずに右辺値参照の処理だけ書いたらどうなるか試してみた
右辺値参照だけ書けば左辺値も処理できるようだ
#include <iostream> using namespace std; struct person { int age; string name; person(int age, const string& name) : age(age), name(name) {} }; void foo(person&& x) {} // 左辺値も右辺値として処理する int main() { foo(person(22, "Akira")); // OK person johnny(38, "Johnny"); foo(johnny); // OK...ここでjohnnyオブジェクトが破壊されたりしないよなー cout << johnny.name << endl; // 8...使えるつかえる return 0; }
左辺値を右辺値参照の引数に渡すと、元のオブジェクトは破壊されないようだ
(当然か・・・)