title: Compilation issue with instantiating function template
body: <p>Consider the following code:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  struct S {
    void f(const char* s) {
      std::cout &lt;&lt; s &lt;&lt; '\n';
    }
  };
  
  template &lt;typename... Args, void(S::*mem_fn)(Args...)&gt;
  void invoke(S* pd, Args... args) {
    (pd-&gt;*mem_fn)(args...);
  }
  
  int main() {
    S s;
    void(*pfn)(S*, const char*) = invoke&lt;const char*, &amp;S::f&gt;;
    pfn(&amp;s, "hello");
  }
  </code></pre>
  
  <p>When compiling the code, clang gives the following error:</p>
  
  <pre><code>main.cpp:16:33: error: address of overloaded function 'invoke' does not match required type 'void (S *, const char *)'
    void(*pfn)(S*, const char*) = invoke&lt;const char*, &amp;S::f&gt;
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
  main.cpp:10:6: note: candidate template ignored: invalid explicitly-specified argument for template parameter 'Args'
  void invoke(S* pd, Args... args) {
       ^
  1 error generated.
  </code></pre>
  
  <p>The message seems to suggest that the template instantiation <code>invoke&lt;const char*, &amp;S::f&gt;</code> has failed. Could somebody give me some clues as to why is this? I believe it has something to do with the parameter pack.</p>