title: Why are C++0x rvalue reference not the default?
body: <p>One of the cool new features of the upcoming C++ standard, C++0x, are &quot;rvalue references.&quot; An rvalue reference is similar to an lvalue (normal) reference, except that it can be bound to a temporary value (normally, a temporary can only be bound to a <code>const</code> reference):</p>
  <pre><code>void FunctionWithLValueRef(int&amp; a) {…}
  void FunctionWithRValueRef(int&amp;&amp; a) {…}
  
  int main() {
       FunctionWithLValueRef(5); // error, 5 is a temporary
       FunctionWithRValueRef(5); // okay
  }
  </code></pre>
  <p>So, why did they invent a whole new type, instead of just removing the restrictions on normal references to allow them to be bound to temporaries?</p>