title: Why does double empty curly braces { { } } create a std::initializer_list<double> with one element, not zero?
body: <p>I have the following constructor:</p>
  
  <pre><code>MyItem(std::initializer_list&lt;double&gt; l) {
      std::cout &lt;&lt; "l size " &lt;&lt; l.size() &lt;&lt; ")" &lt;&lt; std::endl;
  }
  </code></pre>
  
  <p>Which is called later with double curly braces:</p>
  
  <pre><code>MyItem{{}}
  </code></pre>
  
  <p>The result l.size() gives is 1.</p>
  
  <p>What's the mechanics behind such behavior?</p>
  
  <p>It seems like nested {} plays like a default constructor for the only element, but I don't quite understand why and how type deduction works here.</p>