Move a variable and operate on it : <p>Is the following code safe?</p>

<pre><code>struct Foo {
   Foo bar() { return *this; }
} foo;

foo = std::move(foo).bar();  // is this safe?
</code></pre>

<p>I'm wondering if calling methods on an rvalue is safe.</p>
