C++0xではにstd::moveという関数が追加される namespace std { template <class T> inline typename remove_reference<T>::type&& move(T&& x) { return x; } } これは、左辺値(もしくは右辺値)を右辺値に変換するための関数である class person { public: person() {} person(person&&) {} private: person(const person&); }; int main() { person p1; person p2 = std::move(p1); // OK...person(person&&); return 0; } Cry's Diary - 右辺値参照型と左辺値参照型 にあるように、名前が付いたオブジェクトは左辺値