title: When is the copy constructor called for this struct?
body: <p>I'm trying to do some test with {}-lists. When I compiled this in VS2015, the output is </p>
  
  <blockquote>
  <pre><code>copy A 0
  </code></pre>
  </blockquote>
  
  <p>Just don't get it, where is copy constructor called ?</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  struct A
  {
      A() = default;
      A(int i) : m_i(i) {}
      A(const A&amp; a)
      {
          std::cout &lt;&lt; "copy A " &lt;&lt; m_i &lt;&lt; std::endl;
      }
      int m_i = 0;
  };
  
  struct B
  {
      B(const A&amp; a) : m_a(a) {}
      B(const A&amp; a1, const A&amp; a2) {}
      A m_a;
  };
  
  int main()
  {
      A a1{1}, a2{2};
      B b({ a1, a2 });
      return 0;
  }
  </code></pre>