このコードが C++0x で合法であるかどうかについて興味があります。具体的には、関数で宣言されたオブジェクトは、で宣言されmove_it()
たオブジェクトに適切に移動されmain()
ますか?
#include <iostream>
#include <string>
#include <tr1/memory>
using namespace std;
class x
{
public:
x() { cout << "create " << this << endl; }
~x() { cout << "destroy " << this << endl; }
};
x&& move_it()
{
x r;
return move(r);
}
int main()
{
x n = move_it();
return 0;
}