title: Deduction guide for variadic template constructor fails
body: <p>I am trying to reproduce the result from video <a href="https://www.youtube.com/watch?v=1gNzhE-Tn40" rel="noreferrer">C++ Weekly - Ep 48 - C++17's Variadic <code>using</code></a>, but failed. The problem can be simplified to the following code piece.</p>
  
  <p>Suppose I have such generic structure:</p>
  
  <pre><code>template &lt;class... T&gt;
  struct Container {
      template &lt;class... U&gt;
      Container(U... us) {}
  };
  </code></pre>
  
  <p>Now I can initialize a <code>Container</code> with any arguments, like</p>
  
  <pre><code>auto d = Container(1,2,3);
  </code></pre>
  
  <p>However, the compiler will never know what type the <code>d</code> is. To resolve this, we should provide a deduction guide, e.g.</p>
  
  <pre><code>template &lt;class... U&gt;
  Container(U...) -&gt; Container&lt;double, int, bool&gt;
  </code></pre>
  
  <p>According to the video, the compiler now should know <code>d</code> has type <code>Container&lt;double, int, bool&gt;</code>. </p>
  
  <p>However, the code does not work as expected. When printing <code>typeid(d).name()</code>, the output will always be <code>9ContainerIJEE</code>, which is translated to <code>Container&lt;&gt;</code>, no matter how I change the return type in the deduction guide, indicating that such guide does not guide the compiler at all.</p>
  
  <p>I am using <code>gcc-7-snapshot-20170402</code>, the compiler in the video is <code>gcc-7-snapshot-20170130</code>.</p>
  
  <p>Could anyone tell me what is wrong here?</p>
  
  <h2>Update:</h2>
  
  <p>By the way, if I explicitly write</p>
  
  <pre><code>Container&lt;bool, int&gt; d = Container(1,2,3);
  Container&lt;char, char, char&gt; d = Container(1,2,3);
  ...
  </code></pre>
  
  <p>the code will always compile, and provide outputs like <code>9containerIJbiEE
  </code> and <code>9containerIJcccEE</code>.</p>