title: could not convert from <brace-enclosed initializer list>
body: <p>It works for <code>struct RS : public JV&lt;T,1&gt;</code> but not for <code>struct RS : public JV&lt;T,2&gt;</code>. </p>
  
  <pre><code>error: could not convert ‘{(0, j), (0, j)}’ from ‘&lt;brace-enclosed initializer list&gt;’ to ‘WJ&lt;float&gt;’
  </code></pre>
  
  <p>Do I have to overload <code>operator,()</code> ?
  Code:</p>
  
  <pre><code>#include&lt;iostream&gt;
  
  struct B {};
  
  template &lt;std::size_t... Is&gt;
  struct indices {};
  
  template &lt;std::size_t N, std::size_t... Is&gt;
  struct build_indices
    : build_indices&lt;N-1, N-1, Is...&gt; {};
  
  template &lt;std::size_t... Is&gt;
  struct build_indices&lt;0, Is...&gt; : indices&lt;Is...&gt; {};
  
  template&lt;class T,int N&gt;
  struct JV {
  
    JV(B&amp; j) : JV(j, build_indices&lt;N&gt;{}) {}
    template&lt;std::size_t... Is&gt;
    JV(B&amp; j, indices&lt;Is...&gt;) : jit(j), F{{(void(Is),j)...}} {}
  
    B&amp; jit;
    T F[N];
  };
  
  template&lt;class T&gt;
  struct RS : public JV&lt;T,2&gt;
  {
    RS(B&amp; j): JV&lt;T,2&gt;(j) {}
  };
  
  template&lt;class T&gt;
  struct WJ
  {
    WJ(B&amp; j) {
      std::cout &lt;&lt; "WJ::WJ(B&amp;)\n";
    }
  };
  
  int main() {
    B j;
    RS&lt;WJ&lt;float&gt; &gt; b2(j);
  }
  </code></pre>