title: C++ std::deque copy constructor issue
body: <pre><code>#include &lt;deque&gt;
  #include &lt;vector&gt;
  
  struct A
  {
      A(int* const p) : m_P(p) {}
      A(A&amp;&amp; rhs)      : m_P(rhs.m_P) { rhs.m_P = nullptr; }
      A&amp; operator=(A&amp;&amp; rhs) { delete m_P; m_P = rhs.m_P; rhs.m_P = nullptr; }
      ~A() { delete m_P; }
  
      A(A const&amp; rhs)            = delete;
      A&amp; operator=(A const&amp; rhs) = delete;
  
      int* m_P;
  };
  
  int main()
  {
  #ifdef DDDEQUE
      std::vector&lt;std::pair&lt;int, std::deque&lt;A&gt; &gt; &gt;  vd;
      vd.emplace(vd.end(), 1, std::deque&lt;A&gt;());
  #endif // #ifdef DDDEQUE
  
      std::vector&lt;std::pair&lt;int, std::vector&lt;A&gt; &gt; &gt; vv;
      vv.emplace(vv.end(), 1, std::vector&lt;A&gt;());
  }
  </code></pre>
  
  <p>If compiling with g++ 4.8.5, 5.2.0, 5.3.0 and <code>-DDDDEQUE</code> I get a verbose error message ending with</p>
  
  <pre><code>.../bits/stl_construct.h:75:7: error: use of deleted function ‘A::A(const A&amp;)’
       { ::new(static_cast&lt;void*&gt;(__p)) _T1(std::forward&lt;_Args&gt;(__args)...); }
         ^
  gcc.cpp:11:5: note: declared here
        A(A const&amp; rhs)            = delete;
  </code></pre>
  
  <p>without <code>-D...</code> compiles OK.
  With VC2015, VC2012 both versions compile OK.
  Does <code>deque</code> (but not <code>vector</code>) need the copy constructor for gcc?</p>