title: Do built-in types have move semantics?
body: <p>Consider <a href="http://ideone.com/DDd4bn" rel="noreferrer">this</a> code:</p>
  
  <pre><code>#include &lt;iostream&gt;
  using namespace std;
  
  void Func(int&amp;&amp; i) {
      ++i;
  }
  
  int main() {
      int num = 1234;
      cout &lt;&lt; "Before: " &lt;&lt; num &lt;&lt; endl;
      Func(std::move(num));
      cout &lt;&lt; "After: " &lt;&lt; num &lt;&lt; endl;
  }
  </code></pre>
  
  <p>Its output is:</p>
  
  <pre><code>Before: 1234
  After: 1235
  </code></pre>
  
  <p>Clearly, <code>i</code> is being modified inside <code>Func</code>, as it is bound to parameter <code>i</code> after being "converted" to an r-value reference by <code>std::move</code>.</p>
  
  <p><strong>Well, my point:</strong></p>
  
  <p>Moving an object means transferring ownership of resources from one object into another. However, built-in types <em>holds</em> no resources because they themselves are the resources. It makes no sense to transfer the resources they hold. As shown by the example, <code>num</code>'s value is modified. Its resource, its self, is the one being modified.</p>
  
  <p><strong>Do built-in types have move semantics?</strong></p>
  
  <p>Also, Do built-in type objects after it is moved (if it is) a well-defined behavior?</p>