title: Template parameter pack's parameters to T
body: <p>I have a map of components. Components are POD types that have some data. Each component has a unique identifier. The map can own only one component of a given type at any time. As such, I want to be able to query the map's owned components. This is the code I'm using to accomplish this:</p>
  
  <pre><code>template &lt;typename T&gt;
  bool has()
  {
      auto found = map.find(T::tag);
      if (found != map.end()) return true;
      else return false;
  }
  </code></pre>
  
  <p>This would result in awkward code like: <code>something.has&lt;Component&lt;int&gt;&gt;() &amp;&amp; something.has&lt;Component&lt;float&gt;&gt;() ... etc;</code></p>
  
  <p>In order to make the code less messy, I want to make use of variadic templates.</p>
  
  <pre><code>template &lt;typename T, typename... Args&gt;
  bool hasz()
  {
      has&lt;T&gt;();
      has&lt;Args&gt;()...; /* expected ‘;’ before ‘...’ token */
  }
  </code></pre>
  
  <hr>
  
  <p>Shouldn't <code>has&lt;Args&gt;()...</code> expand to (pseudo) <code>has&lt;Args[0]&gt;(), has&lt;Args[1]&gt;(), etc...</code> (which would be legal syntax)? And is it possible to do this at all?</p>