title: Variadic Templates - Parameter pack expansion understanding
body: <p>I am having a hard time understanding parameter pack expansion.
  The thing that confuses me are when dots appear on the right side and when dots appear on the left side. I came across <a href="https://stackoverflow.com/questions/23485643/understanding-the-dots-in-variadic-template-function">this</a> post which helped a little.
  Suppose I have the following two examples</p>
  
  <pre><code>Example 1:
  template &lt;class ...A&gt;   --&gt; line 1
  int func(A... arg)      --&gt; line 2
  {
     return sizeof...(arg);
  }
  
  int main(void)
  {
     return func(1,2,3,4,5,6);
  }
  </code></pre>
  
  <p>The post I mentioned above I believe mentions that the difference b/w <code>...A</code> and <code>A...</code> is that the first one does Left side expansion and the second one does right side expansion. I am not sure what that means. Could anyone please clarify this with how something would look like when expanded. The only thing I understand so far regarding dots on the right hand side are the examples such as this</p>
  
  <pre><code>//Foo and bar are variadic parameter packs
  Foo...                     =&gt; Foo1, Foo2, Foo3, etc
  std::vector&lt;Foo&gt;...        =&gt; std::vector&lt;Foo1&gt;, std::vector&lt;Foo2&gt;, std::vector&lt;Foo3&gt;, etc.
  std::tuple&lt;Foo...&gt;(bar...) =&gt; std::tuple&lt;Foo1, Foo2, Foo3, etc&gt;(bar1, bar2, bar3, etc)
  &amp;bar...                    =&gt; &amp;bar1, &amp;bar2, &amp;bar3, etc
  </code></pre>
  
  <p>could any one please clarify what the dots expand to in line 1 and line 2 and what is the difference between left side expansion and right side expansion ?</p>