title: C++0x Variadic Parameter Pack: Syntax
body: <p>the following code snippet won't compile under gcc4.6.1:</p>
  
  <pre><code>template &lt;typename... TS&gt;
  void do_stuff(TS... ts)
  {
    auto f = [](TS... things) { };
  }
  </code></pre>
  
  <p>It throws an error stating that the pack things was not expanded. The following code does compile however:</p>
  
  <pre><code>template &lt;typename... TS&gt;
  void do_stuff(TS... ts)
  {
    auto f = [](TS... things...) { };
  }
  </code></pre>
  
  <p>Notice the extra unpacking operator after things inside the parameter list. I've never seen a situation where a variadic pack had to be expanded during its declaration. So my question to you kind folks is:</p>
  
  <p>Is this legal C++0x syntax (the snippet that compiles) or is it just a quirk with GCC when it comes to dealing with variadic types?</p>