title: Initialization of std::array with std::initializer_list in constructor's initialization list
body: <p>Consider the following piece of code:</p>
  
  <pre><code>struct foo {
    std::vector&lt;int&gt; v;
    foo(std::initializer_list&lt;int&gt; L) : v{L} {}
  };
  </code></pre>
  
  <p>The code above compiles fine and initializes <code>v</code> as expected. Now consider the following piece of code:</p>
  
  <pre><code>struct bar {
    std::array&lt;int, 3&gt; a;
    bar(std::initializer_list&lt;int&gt; L) : a{L} {}
  };
  </code></pre>
  
  <p>The above piece of code gives a compile error.</p>
  
  <blockquote>
    <p>error: no viable conversion from 'std::initializer_list' to 'int'</p>
  </blockquote>
  
  <p>Searching the web I found that the "proper" way to initialize a member <code>std::array</code> with a <code>std::list_initializer</code> is to use <code>reinterpret_cast</code> in the following manner:</p>
  
  <pre><code>bar(std::initializer_list&lt;int&gt; L) : a(reinterpret_cast&lt;std::array&lt;int, 3&gt; const&amp;&gt;(*(L.begin()))) {}
  </code></pre>
  
  <h2>Q:</h2>
  
  <p>Why I can initialize a member <code>std::vector</code> with an <code>std::initializer_list</code> in the initialization list of a constructor but I can't a member <code>std::array</code>?</p>
  
  <p>Is the work-around showed above with <code>reinterpret_cast</code> the proper way to initialize a member <code>std::array</code> with a <code>std::initializer_list</code>?</p>