title: function taking variadic number of initializer_lists with different types
body: <p><strong>NOTE:</strong> this question was caused by a bug in clang</p>
  
  <hr>
  
  <p>In attemping to write a function taking an arbitrary number of <code>intitializer_list</code>s whose types need not match, I've stumbled upon a strange error:</p>
  
  <pre><code>template &lt;typename... Ts&gt;
  void function(std::initializer_list&lt;Ts&gt; &amp;&amp;  ...args){
  
  }
  
  int main() {
      function({1,2,3}, {'h', 'w'}, {"hello", "aloha"});
      return 0;
  }
  </code></pre>
  
  <p>The string literals cause a problem under clang but not under gcc with <code>-pedantic -Wall -Wextra</code> not warning about any extensions.</p>
  
  <p>clang produces the error:</p>
  
  <pre><code>error: no matching function for call to 'function'
      function({1,2,3}, {'h', 'w'}, {"hello", "aloha"});
      ^~~~~~~~
  note: candidate function [with Ts = &lt;int, char, char const[6]&gt;] not
        viable: no known conversion from 'const char [6]' to 'char const[6]' for
        3rd argument
  void function(std::initializer_list&lt;Ts&gt; &amp;&amp;  ...args){
       ^
  </code></pre>
  
  <p>So a few questions:
  Is clang wrong for rejecting this or is gcc using an extension to deduce an initializer_list of arrays?  Or is it deeper where gcc is just passing bad code?</p>
  
  <p>Is this is the equivalent of passing an <code>initializer_list</code> of <code>initializer_list</code>s which is of course not allowed?</p>
  
  <p>What is the difference between <code>const char[6]</code> and <code>char const[6]</code>?</p>
  
  <p>Details:</p>
  
  <p>clang version 3.4 (<a href="http://llvm.org/git/clang.git" rel="nofollow">http://llvm.org/git/clang.git</a> 9a65f4251fe5548e0b4478d584796ca84a6f5ebc) (<a href="http://llvm.org/git/llvm.git" rel="nofollow">http://llvm.org/git/llvm.git</a> 4f67afc3d67d9a68f1b37767c9c2966a775186bd)
  Target: x86_64-unknown-linux-gnu
  Thread model: posix</p>
  
  <p>gcc (Debian 4.7.2-5) 4.7.2</p>
  
  <p>Debian 7</p>