title: Direct initialization with empty initializer list
body: <pre><code>struct X
  {
      X() { std::cout &lt;&lt; "default ctor" &lt;&lt; std::endl; }
  
  };
  
  int main()
  {
      X({});
  }
  </code></pre>
  
  <p>This prints out</p>
  
  <pre><code>default ctor
  </code></pre>
  
  <p>and that makes sense because empty brace value-initializes the object (I think).
  However,</p>
  
  <pre><code>struct X
  {
      X() { std::cout &lt;&lt; "default ctor" &lt;&lt; std::endl; }
      X(std::initializer_list&lt;int&gt;) { std::cout &lt;&lt; "initializer list" &lt;&lt; std::endl; }
  };
  
  int main()
  {
      X({});
  }
  </code></pre>
  
  <p>For this, I got</p>
  
  <pre><code>initializer list
  </code></pre>
  
  <p>I don't find this behavior so strange, but I'm not fully convinced. What is the rule for this?</p>
  
  <p>Is this behavior written in some part of the standard?</p>