title: illegal use of deleted function
body: <p>I have a class A</p>
  
  <pre><code>struct A
  {
      A() = delete;
      A(const A&amp;) = default;
      A&amp; operator=(const A&amp;) = default;
      A(A&amp;&amp;) = default;
      A&amp; operator=(A&amp;&amp;) = default;
  
      explicit A(int i) ....
      // a few explicit constructors
  }
  </code></pre>
  
  <p>when I am trying to get strcut A that is stored in unordered_map as below:</p>
  
  <pre><code>auto a = my_map[key_];
  </code></pre>
  
  <p>I get </p>
  
  <blockquote>
    <p>illegal use of deleted method</p>
  </blockquote>
  
  <p>error.
  my understanding was that this is a copy construction, but I do not know why compiler calls the default constructor before the assignement.</p>