title: Calling a function template in a pack expansion pattern
body: <p>Let's keep it short. Why does the following code compile successfully...</p>
  
  <pre><code>#define RUN_FORALL(pattern) (int[]){0, ((pattern), void(), 0)...}
  template &lt;typename ...Attributes&gt;
  class Foo : public Attributes... {
    template &lt;typename T&gt;
    void bar(T o) { RUN_FORALL(Attributes::value = o.getValue()); }
  };
  int main() {}
  </code></pre>
  
  <p>... and the following code does not?</p>
  
  <pre><code>#define RUN_FORALL(pattern) (int[]){0, ((pattern), void(), 0)...}
  template &lt;typename ...Attributes&gt;
  class Foo : public Attributes... {
    template &lt;typename T&gt;
    void bar(T o) { RUN_FORALL(Attributes::value = o.getValue&lt;Attributes&gt;()); }
  };
  int main() {}
  </code></pre>
  
  <p>Error:</p>
  
  <pre><code>1:30: error: expected primary-expression before 'int'
  5:19: note: in expansion of macro 'RUN_FORALL'
  </code></pre>
  
  <p>How can I call a function template in a pack expansion pattern?</p>