title: C++ template variable and parameter pack expansion
body: <p>In libstdc++ variant source, it defines the following template variable (taken out from the struct _Traits),</p>
  
  <pre class="lang-cpp prettyprint-override"><code>template&lt;typename... _Types&gt;
    static constexpr bool _S_copy_ctor = 
      (is_copy_constructible_v&lt;_Types&gt; &amp;&amp; ...);
  </code></pre>
  
  <p>What does the '&amp;&amp;' do here?</p>
  
  <p>I tried to take out the '&amp;&amp;' it failed to compile, so, what's difference of the two?</p>
  
  <pre class="lang-cpp prettyprint-override"><code>  static constexpr bool _S_copy_ctor = (is_copy_constructible_v&lt;_Types&gt; &amp;&amp; ...);
    static constexpr bool _S_copy_ctor = (is_copy_constructible_v&lt;_Types&gt;    ...);
  </code></pre>