title: How can one move-construct a C++ STL map?
body: <p>The following code raises an error under GCC 4.9.3.</p>
  
  <pre><code>    #include &lt;map&gt;
      using namespace std;
  
      struct Movable {
          Movable(const Movable&amp;) = delete;
          Movable(Movable&amp;&amp;) = default;
      };
  
      class Foo {
          const map&lt;int, Movable&gt; m;
          Foo(map&lt;int, Movable&gt;&amp;&amp; _m) : m{_m} {}
      };
  </code></pre>
  
  <p>The underlying error is <code>use of deleted function 'Movable::Movable(const Movable&amp;)'</code> -- but AFAICS it shouldn't be trying to copy the underlying Movable.</p>