title: Why does gcc hide overloaded functions in the global namespace?
body: <pre><code>void f() {}
  
  namespace test
  {
  void f(int) {}    
  void g() { f(); } // error in gcc 6.2.0
  }
  
  int main()
  {
      test::g();
  }
  </code></pre>
  
  <p>Compile it with <strong>g++ -std=c++1z main.cpp</strong>, the output is as follows:</p>
  
  <blockquote>
  <pre><code>main.cpp: In function 'void test::g()':
  main.cpp:9:4: error: too few arguments to function 'void test::f(int)'
    f(); // error in gcc
      ^
  main.cpp:5:6: note: declared here
   void f(int) {}
  </code></pre>
  </blockquote>
  
  <p>My compiler is gcc 6.2.0.</p>
  
  <p>Why does gcc hide overloaded functions in the global namespace? Is this conforming to the C++ standard?</p>