title: Why does global template function not visible inside member function?
body: <p>The following code <a href="https://wandbox.org/permlink/au91bEN6WcAGY3Ds" rel="nofollow noreferrer">doesn't compile</a>:</p>
  
  <pre><code>template &lt;class T&gt;
  void f(T t) { }
  
  struct S {
      void f(int, double) {}
      void f() { f(42); }
  };
  </code></pre>
  
  <p>Error is:</p>
  
  <blockquote>
  <pre><code>no matching member function for call to 'f'
  </code></pre>
  </blockquote>
  
  <p>If I explicitly add <code>::</code> before <code>f(42)</code> code <a href="https://wandbox.org/permlink/FTzOIW4mHvvdFjg4" rel="nofollow noreferrer">will be well compiled</a>. 
  Why does global template function with the same name as member function (but different number of parameters) not visible inside class namespace?</p>