title: initializer_list<T> can't convert to initializer_list<U>, but T convertable to U
body: <p>Considering the following code snippet...</p>
  
  <pre><code>void boo(std::initializer_list&lt;unsigned&gt; l)
  {
  }
  
  template &lt;class T&gt;
  void foo(std::initializer_list&lt;T&gt; l)
  {
      //Even though T is convertable, initializer list is not...:-(
      boo(move(l));
  }
  
  int main()
  {
      foo({1u,2u,3u}); //Compiles fine as expected
      foo({1,2,3}); //Fails to compile at line 9... - could not convert...
      return 0;
  }
  </code></pre>
  
  <p>... I'm surprised that <code>initializer_list&lt;int&gt;</code> is not convertible to <code>initializer_list&lt;unsigned&gt;</code>, event though int converts to unsigned.</p>
  
  <p>I've been wondering in what way one can write foo to allow the conversion. Can one somehow unwrap the list having the wrong type and recreate a new list with the right type?</p>