title: Why does overload of template and non-template function with the "same signature" call the non-template function?
body: <p>I have this code:</p>
  
  <pre><code>template&lt;
      class T = const int &amp;
  &gt; void f(T) {}
  
  void f(const int &amp;) {}
  
  int main() {
     f(0);
  }
  </code></pre>
  
  <p>Why does it call the second one instead of first? I would think of them as being the same but they're clearly not as I do not get a redefinition error.</p>