title: Clang, MSVC, GCC disagree about compiling this code with function application in index_sequence
body: <p>This code is from an <a href="https://stackoverflow.com/a/69484179/700825">answer</a> to another question:</p>
  <pre><code>template &lt;typename F, std::size_t ... Is&gt;
  constexpr auto apply(F f, std::index_sequence&lt;Is...&gt;)
  -&gt; std::index_sequence&lt;f(Is)...&gt;
  {
      return {};
  }
  </code></pre>
  <p>gcc fails with</p>
  <blockquote>
  <pre><code>&lt;source&gt;:5:29: error: expected parameter pack before '...'
  </code></pre>
  </blockquote>
  <p>msvc and clang compile it.</p>
  <p>Changing it to this now causes msvc to fail:</p>
  <pre><code>template &lt;typename F, std::size_t ... Is&gt;
  constexpr auto apply(F , std::index_sequence&lt;Is...&gt;)
  -&gt; std::index_sequence&lt;F{}(Is)...&gt;
  {
      return {};
  }
  </code></pre>
  <blockquote>
  <pre><code>&lt;source&gt;(5): error C2187: syntax error: '&lt;end Parse&gt;' was unexpected here 
  &lt;source&gt;(5): error C2059: syntax error: '('
  &lt;source&gt;(6): error C2988: unrecognizable template declaration/definition 
  &lt;source&gt;(6): error C2059: syntax error: '{'
  &lt;source&gt;(6): error C2143: syntax error: missing ';' before '{''
  &lt;source&gt;(6): error C2447: '{': missing function header (old-style formal list?)
  </code></pre>
  </blockquote>
  <p>Is this something vague in C++ standard or just an implementation bug? I see no reason why function calls should not be allowed at this place, same for construction of a <code>F{}</code>.</p>