title: Copy elision for list-initialization, where is it stated in the standard?
body: <p>In <a href="https://timsong-cpp.github.io/cppwp/n4659/dcl.init#17.6.1" rel="noreferrer">[dcl.init]/17.6</a>, it is explicitly written that for the case of parenthesis initialization, copy elision occurs:</p>
  
  <blockquote>
    <p>If the initializer expression is a prvalue and the cv-unqualified version of the source type is the same class as the class of the destination, the initializer expression is used to initialize the destination object. [ <em>Example:</em> T x = T(T(T())); calls the T default constructor to initialize x.  — <em>end example</em> ]</p>
  </blockquote>
  
  <p>But in the case of list-initialization, for which the above paragraph does not apply, I did not find anything similar. See <a href="https://timsong-cpp.github.io/cppwp/n4659/dcl.init.list" rel="noreferrer">[dcl.init.list]</a>.</p>
  
  <p>So why is there copy elision in this case: <code>T x{T(T())};</code> according to the C++17 standard.</p>