title: Variadic template pack expansion
body: <p>I am trying to learn variadic templates and functions. I can't understand why this code doesn't compile:</p>
  
  <pre><code>template&lt;typename T&gt;
  static void bar(T t) {}
  
  template&lt;typename... Args&gt;
  static void foo2(Args... args)
  {
      (bar(args)...);
  }
  
  int main()
  {
      foo2(1, 2, 3, "3");
      return 0;    
  }
  </code></pre>
  
  <p>When I compile it fails with the error:</p>
  
  <blockquote>
    <p>Error C3520: 'args': parameter pack must be expanded in this context</p>
  </blockquote>
  
  <p>(in function <code>foo2</code>).</p>