title: Using default arguments for std::index_sequence
body: <p>I have difficulties to understand the following. Why does this code compile</p>
  
  <pre><code>template &lt;size_t N, size_t... N_i, size_t... M_i&gt;
  auto foo2(std::index_sequence&lt;M_i...&gt; = std::make_index_sequence&lt;N&gt;())
  {
  
      constexpr size_t values[] = {N_i...};
      return A&lt;values[M_i]...&gt;();
  }
  
  
  template &lt;size_t N,size_t... N_i&gt;
  auto foo()
  {
      return foo2&lt;N,N_i...&gt;(std::make_index_sequence&lt;N&gt;());
  }
  
  
  int main()
  {
   foo&lt;2, 1,2,3&gt;();
  }
  </code></pre>
  
  <p>but this not (where I use the default argument of <code>foo2</code>):</p>
  
  <pre><code>template &lt;size_t N, size_t... N_i, size_t... M_i&gt;
  auto foo2(std::index_sequence&lt;M_i...&gt; = std::make_index_sequence&lt;N&gt;())
  {
  
      constexpr size_t values[] = {N_i...};
      return A&lt;values[M_i]...&gt;();
  }
  
  
  template &lt;size_t N,size_t... N_i&gt;
  auto foo()
  {
      return foo2&lt;N,N_i...&gt;();
  }
  
  
  int main()
  {
   foo&lt;2, 1,2,3&gt;();
  }
  </code></pre>
  
  <p>Many thanks in advance.</p>