title: Do static_assert on every other type in a template
body: <p>How can I do <code>static_assert</code>s (or other checks) on every other type in a template?</p>
  
  <pre><code>template&lt;typename... Ts&gt; //T1,T2,T3,...
  struct foo {
    //How can I
    //for T1,T3,T5,T7,...
    //do some checks, for example:
    //static_assert(std::is_default_constructible&lt;Tn&gt;::value,"invalid type");
    //static_assert(std::is_copy_constructible&lt;Tn&gt;::value,"invalid type");
  };
  </code></pre>