title: None of the copy/move constructor/assignment is called while initializing
body: <p>Class A defines all copy/move constructor/assignment as follows:</p>
  
  <pre><code>struct A 
  {
      std::string s;
  
      A() : s("test") { }
      A(const A&amp; other) : s(other.s) { std::cout &lt;&lt; "Copy constructor\n";}
      A(A&amp;&amp; other) : s(std::move(other.s)) { std::cout &lt;&lt; "Move constructor\n";}
      A&amp; operator= (const A&amp; other) { std::cout &lt;&lt; "Copy assignment\n"; s = other.s; return *this;}
      A&amp; operator= (A&amp;&amp; other) { std::cout &lt;&lt; "Move assignment\n"; s = std::move(other.s); return *this;}
  };
  </code></pre>
  
  <p>And the followings are functions returning an object of type A:</p>
  
  <pre><code>A f(A a) { return a; }
  A g() { return A(); }
  </code></pre>
  
  <p>The <code>main()</code> function is this:</p>
  
  <pre><code>int main()
  {
      A a1 = f(A());          // Move-construct
      A a2 = std::move(a1);   // Move-construct
      A a3 (std::move(a2));   // Move-construct
      A a4 (a1);              // Copy-construct
      A a5 = a4;              // Copy-construct
      a5 = f(A());            // Move constructor + Move assignment
      a5 = a4;                // Copy assignment
      a5 = g();               // Move assignment
      A a6 = g();             // None!! Member-wise assignment (?)
  }
  </code></pre>
  
  <p>Can anybody tell me, why on earth none of the constructors and assignment operators is called for <code>a6</code>? Which part of C++11's documentation describes this behavior?</p>