title: Cannot convert the second argument of the initializer-list
body: <p>The Standard says: (<code>N3797::13.3.3.1/4 [over.best.ics]</code>) </p>
  
  <blockquote>
    <p>However, when considering the argument of a constructor or
    user-defined conversion function that is a candidate by 13.3.1.3 when
    invoked for the copying/moving of the temporary in the second step of
    a class copy-initialization, by 13.3.1.7 when passing the initializer
    list as a single argument or when the initializer list has exactly one
    element and a conversion to some class <code>X</code> or reference to (possibly
    cv-qualified) <code>X</code> <em>is</em> considered for the <em>first</em> parameter of a constructor
    of <code>X</code>, [...] only standard conversion sequences and ellipsis conversion sequences are considered.</p>
  </blockquote>
  
  <p>That's we're concerned about the first argument only in the following case:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  struct B;
  
  struct C
  {
      C(){ }
      C(const B&amp;){ }
  };
  
  struct B
  { 
      B(){ }
      B(const C&amp;){ }
  };
  
  struct A
  {
      A(const C&amp;, const C&amp;){ }
      A(const B&amp;){ }
  };
  
  B b;
  C c;
  A a{b, b};
  
  
  int main(){ }
  </code></pre>
  
  <p><strong><a href="http://coliru.stacked-crooked.com/a/52e1809738ba1057" rel="nofollow">DEMO</a></strong></p>
  
  <p>It works, although I provided <code>b</code> as the first argument and the user-defined conversion <code>B--&gt;C</code> shouldn't be applied.</p>