title: Variadic function template strange error message for unresolved overloaded argument
body: <p>I came across a confusing error when accidentally passing an overloaded function to a variadic function template:</p>
  
  <pre><code>template&lt;typename... Args&gt;
  void variadic(Args... args) {}
  
  void overloaded() {}
  void overloaded(int) {}
  
  int main()
  {
      variadic(overloaded);
  }
  </code></pre>
  
  <p>Error:</p>
  
  <pre><code>prog.cpp: In function 'int main()':
  prog.cpp:9:24: error: too many arguments to function 'void variadic(Args ...) [with Args = {}]'
       variadic(overloaded);
                      ^
  prog.cpp:2:6: note: declared here
   void variadic(Args... args) {}
        ^
  </code></pre>
  
  <p>If I replace the variadic function template with a normal function template I get a clearer error message:</p>
  
  <pre><code>prog.cpp: In function 'int main()':
  prog.cpp:9:25: error: no matching function for call to 'templated(&lt;unresolved overloaded function type&gt;)'
       templated(overloaded);
                           ^
  prog.cpp:2:6: note: candidate: template&lt;class Arg&gt; void templated(Arg)  void templated(Arg args) {}
        ^
  prog.cpp:2:6: note:   template argument deduction/substitution failed:
  prog.cpp:9:25: note:   couldn't deduce template parameter 'Arg'
       templated(overloaded);
                           ^
  </code></pre>
  
  <p>Can anyone explain why the variadic error message is different? I know why there is one, just not why it's different from the normal template error.</p>
  
  <p>I'm using g++ 5.2.1 with C++14.</p>
  
  <p>Try it here: <a href="https://ideone.com/8XZexs" rel="nofollow">https://ideone.com/8XZexs</a></p>