Why std::array does not contain an initializer-list constructor
<p>In order to initialize a <code>std::array</code> with some values, you need to use this approach:</p>

<pre><code>std::array&lt;int,3&gt; an_array{{3,4,5}};
</code></pre>

<p>I am aware of the reason that we need two curly braces (one for <code>std::array</code> and the the other for the inner <code>c-style array</code>).</p>

<p><strong>My question:</strong> Why, by standard, <code>std::array</code> does not contain an initializer-list constructor that directly initialize the inner <code>c-style array</code>? Is not more eyes-friendly to be initialized as:</p>

<pre><code>std::array&lt;int,3&gt; an_array{3,4,5};
</code></pre>

<p><strong>Edit:</strong></p>

<p>This information is from <a href="http://en.cppreference.com/w/cpp/container/array">http://en.cppreference.com/w/cpp/container/array</a>. I thought my compiler is allowing the second version directly as non-standard extension. Now, I am not even sure what is the standard exactly about this case.</p>

<blockquote>
  <p>// construction uses aggregate initialization</p>
  
  <p><code>std::array&lt;int, 3&gt; a1{ {1, 2, 3} };</code> // double-braces required in C++11 (not in C++14)</p>
</blockquote>