title: variadic templated overload of operator [] in templated class
body: <p>I am trying to overload the operator[]. The following code does not compile and I suspect I'm just making a syntax mistake, but I need help understanding what I'm doing wrong and why.</p>
  
  <p>Here is an excerpt of the relevant code:</p>
  
  <pre><code>template &lt;typename T&gt;
  class MultiDimArray{
  public:
    template &lt;typename ...I&gt;
    T&amp; operator[](const size_t firstIndex,const size_t ...I);
    //...
  }
  
  template &lt;typename T&gt; //class's template parameter(s)
  template &lt;typename ...I&gt; //function's template parameter(s)
  T&amp; MultiDimArray&lt;T&gt;::operator[](const size_t firstIndex,const size_t ...I){
    //...
  }
  </code></pre>
  
  <p>Note1: I'm trying to follow the compile time convertible to type checking suggested at the top of <a href="https://stackoverflow.com/a/20407859/1598298">this answer</a>.</p>