title: c++11 array initialization won't call copy constructor
body: <p>I'm making a little class that uses an array templated on its size. Here's some code...</p>
  
  <p>.hpp</p>
  
  <pre><code>template &lt;size_t N&gt;
  class KeyCombinationListener
  {
  public:
      KeyCombinationListener(
          const std::array&lt;sf::Keyboard::Key, N&gt;&amp; sequence,
          std::function&lt;void (void)&gt; fn
          );
  
  private:
      std::array&lt;sf::Keyboard::Key, N&gt;  combo;
      std::function&lt;void (void)&gt;  callback;
  };
  </code></pre>
  
  <p>.cc</p>
  
  <pre><code>template &lt;size_t N&gt;
  KeyCombinationListener&lt;N&gt;::KeyCombinationListener(
      const array&lt;sf::Keyboard::Key, N&gt;&amp; sequence, function&lt;void (void)&gt; fn
      ) : combo(sequence), progress{begin(combo)}, callback{fn}
  {
  
  }
  </code></pre>
  
  <p>In the member initialization of the constructor, I can't use <code>combo{sequence}</code> as the initializer because it only accepts <code>sf::Keyboard::Key</code> types. This makes sense if it's asking for an <code>initializer_list</code>, but this seems strange to me. With other standard containers I can call a copy constructor using {} notation just fine. Is this a quirk with <code>std::array</code>? Or maybe a bug in my clang?</p>
  
  <p>Just in case it helps, here's my clang version:</p>
  
  <pre><code>Debian clang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0)
  Target: x86_64-pc-linux-gnu
  Thread model: posix
  Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
  Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.2
  Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
  Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.2
  Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
  Candidate multilib: .;@m64
  Selected multilib: .;@m64
  </code></pre>