title: Manipulate function arguments of a variadic function template
body: <p>I have a pair of <code>begin()</code>/<code>end()</code> methods declared as follows:</p>
  
  <pre><code>template &lt;typename... Ts&gt;
  Iterator begin(Ts... indices) const;
  
  template &lt;typename... Ts&gt;
  Iterator end(Ts... indices) const;
  </code></pre>
  
  <p>Logically, <code>end()</code> can be implemented in terms of <code>begin()</code>. Specifically, <code>end(x, y, ..., z)</code> is equivalent to <code>begin(x, y, ..., z + 1)</code>. So, is there a clean way to turn <code>x, y, ..., z</code> into <code>x, y, ..., z + 1</code> using <code>indices</code>, so that I can implement <code>end()</code> like</p>
  
  <pre><code>template &lt;typename... Ts&gt;
  Iterator end(Ts... indices) const {
    return begin(whatever to do with indices...);
  }
  </code></pre>