title: C++11 use-case for piecewise_construct of pair and tuple?
body: <p>In <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3059.pdf">N3059</a> I found the description of <strong>piecewise construction</strong> of pairs (and tuples) (and it is in the new Standard).</p>
  
  <p>But I can not see when I should use it. I found discussions about <em>emplace</em> and non-copyable entities, but when I tried it out, I could not create a case where I <em>need</em> <code>piecewiese_construct</code> or could see a performance benefit.</p>
  
  <p>Example. I thought I need a class which is <em>non-copyable</em>, but <em>movebale</em> (required for forwarding):</p>
  
  <pre><code>struct NoCopy {
    NoCopy(int, int) {};
    NoCopy(const NoCopy&amp;) = delete; // no copy
    NoCopy&amp; operator=(const NoCopy&amp;) = delete; // no assign
    NoCopy(NoCopy&amp;&amp;) {}; // please move
    NoCopy&amp; operator=(NoCopy&amp;&amp;) {}; // please move-assign
  };
  </code></pre>
  
  <p>I then sort-of expected that standard pair-construction would fail:</p>
  
  <pre><code>pair&lt;NoCopy,NoCopy&gt; x{ NoCopy{1,2}, NoCopy{2,3} }; // fine!
  </code></pre>
  
  <p>but it did not. Actually, this is what I'd expected anyway, because "moving stuff around" rather then copying it everywhere in the stdlib, is it should be.</p>
  
  <p>Thus, I see no reason why I should have done this, or so:</p>
  
  <pre><code>pair&lt;NoCopy,NoCopy&gt; y(
      piecewise_construct,
      forward_as_tuple(1,2),
      forward_as_tuple(2,3)
  ); // also fine
  </code></pre>
  
  <ul>
  <li>So, what's a the <strong>usecase</strong>?</li>
  <li><strong>How and when</strong> do I use <code>piecewise_construct</code>?</li>
  </ul>